diff --git a/mods/creative/init.lua b/mods/creative/init.lua
index ef190b8..0f8d4db 100644
--- a/mods/creative/init.lua
+++ b/mods/creative/init.lua
@@ -1,9 +1,24 @@
 creative = {}
 
+local function update_sfinv(name)
+	minetest.after(0, function()
+		local player = minetest.get_player_by_name(name)
+		if player then
+			if sfinv.get_page(player):sub(1, 9) == "creative:" then
+				sfinv.set_page(player, sfinv.get_homepage_name(player))
+			else
+				sfinv.set_player_inventory_formspec(player)
+			end
+		end
+	end)
+end
+
 minetest.register_privilege("creative", {
 	description = "Allow player to use creative inventory",
 	give_to_singleplayer = false,
-	give_to_admin = false
+	give_to_admin = false,
+	on_grant = update_sfinv,
+	on_revoke = update_sfinv,
 })
 
 local creative_mode_cache = minetest.settings:get_bool("creative_mode")