diff --git a/game/engines/default/engine/Game.lua b/game/engines/default/engine/Game.lua
index 90e0137603aa52587be1b7334ca4914d08fdb883..856f95e43f94f7e8a537880b85215da4a1b75115 100644
--- a/game/engines/default/engine/Game.lua
+++ b/game/engines/default/engine/Game.lua
@@ -51,7 +51,12 @@ end
 
 --- Default mouse cursor
 function _M:defaultMouseCursor()
-	self:setMouseCursor("/data/gfx/ui/mouse.png", "/data/gfx/ui/mouse-down.png", -4, -4)
+	local UIBase = require "engine.ui.Base"
+	if fs.exists("/data/gfx/"..UIBase.ui.."-ui/mouse.png") and fs.exists("/data/gfx/"..UIBase.ui.."-ui/mouse-down.png") then
+		self:setMouseCursor("/data/gfx/"..UIBase.ui.."-ui/mouse.png", "/data/gfx/"..UIBase.ui.."-ui/mouse-down.png", -4, -4)
+	else
+		self:setMouseCursor("/data/gfx/ui/mouse.png", "/data/gfx/ui/mouse-down.png", -4, -4)
+	end
 end
 
 function _M:setMouseCursor(mouse, mouse_down, offsetx, offsety)
diff --git a/game/engines/default/modules/boot/class/Game.lua b/game/engines/default/modules/boot/class/Game.lua
index 9a2250b18d1423c6303f5c6f7b65b3046d1c62f1..35df6eefc775cb7e108baacf1a8ba1efc04aad06 100644
--- a/game/engines/default/modules/boot/class/Game.lua
+++ b/game/engines/default/modules/boot/class/Game.lua
@@ -86,6 +86,8 @@ function _M:loaded()
 end
 
 function _M:run()
+	self:triggerHook{"Boot:run"}
+
 	self.flyers = FlyingText.new()
 	self:setFlyingText(self.flyers)
 	self.log = function(style, ...) end
diff --git a/game/engines/default/modules/boot/load.lua b/game/engines/default/modules/boot/load.lua
index 760174f40be5a983046ea8881a573c4be1316f06..ca06ae1fc7424a44a2a21474c3847f0880475823 100644
--- a/game/engines/default/modules/boot/load.lua
+++ b/game/engines/default/modules/boot/load.lua
@@ -64,4 +64,6 @@ Birther:loadDefinition("/data/birth/descriptors.lua")
 -- Switch to realtime, with 8 ticks per second
 core.game.setRealtime(8)
 
+class:triggerHook{"Boot:load"}
+
 return {require "mod.class.Game" }