diff --git a/game/engines/default/engine/Tooltip.lua b/game/engines/default/engine/Tooltip.lua
index 0e1765ff5b31595f95e961df2f3c594cdc58c260..0da59c031af65282d4c5a5cb8d4d74b256b3363c 100644
--- a/game/engines/default/engine/Tooltip.lua
+++ b/game/engines/default/engine/Tooltip.lua
@@ -70,6 +70,7 @@ function _M:set(str, ...)
 	-- if locked change is forbiden
 	if self.locked then return end
 	self.pingpong = 0
+	str = str or {}
 	
 	if type(str) == "string" then str = ... and str:format(...):toTString() or str:toTString() end
 	if type(str) == "number" then str = tostring(str):toTString() end
@@ -266,7 +267,7 @@ function _M:displayAtMap(tmx, tmy, mx, my, text, force, nb_keyframes)
 				self.old_ttmx, self.old_ttmy = tmx, tmy
 				self.old_turn = game.turn
 				local ts = self:getTooltipAtMap(tmx, tmy, mx, my)
-				if ts then
+				if ts or self.add_map_str then
 					self:set(ts)
 				else
 					self:erase()
diff --git a/game/engines/default/engine/ai/simple.lua b/game/engines/default/engine/ai/simple.lua
index ad96df0533e5294c63f801bd3dc7f91e9e8a6179..7798fef09ccbd8eefdba5f8e16203db7a944003c 100644
--- a/game/engines/default/engine/ai/simple.lua
+++ b/game/engines/default/engine/ai/simple.lua
@@ -30,7 +30,7 @@ newAI("move_simple", function(self)
 end)
 
 newAI("move_dmap", function(self)
-	if self.ai_target.actor then
+	if self.ai_target.actor and self.x and self.y then
 		local a = self.ai_target.actor
 		if self:hasLOS(a.x, a.y) then return self:runAI("move_simple") end
 
diff --git a/game/engines/default/engine/utils.lua b/game/engines/default/engine/utils.lua
index 8269816ceaba76080bee24ac4081f5745bd9266b..d3fcbc9730b1d5ff3d38f671752e824537c03c94 100644
--- a/game/engines/default/engine/utils.lua
+++ b/game/engines/default/engine/utils.lua
@@ -1286,6 +1286,8 @@ util = {}
 
 function util.clipOffset(w, h, total_w, total_h, loffset_x, loffset_y, dest_area)
 	w, h = math.floor(w), math.floor(h)
+	total_w, total_h, loffset_x, loffset_y = math.floor(total_w), math.floor(total_h), math.floor(loffset_x), math.floor(loffset_y)
+	dest_area.w , dest_area.h = math.floor(dest_area.w), math.floor(dest_area.h)
 	local clip_y_start = 0
 	local clip_y_end = 0
 	local clip_x_start = 0