diff --git a/src/lua_script.c b/src/lua_script.c
index 8c0d45f1f8041e03049febb7c7b6fb8332c3fdd6..362aae993f1e974cd19d6c41153f4306348b6344 100644
--- a/src/lua_script.c
+++ b/src/lua_script.c
@@ -675,7 +675,7 @@ void LUA_DumpFile(const char *filename)
 
 fixed_t LUA_EvalMath(const char *word)
 {
-	static int fenv_ref = LUA_NOREF;
+	static int enum_env = LUA_NOREF;
 
 	lua_State *L = LUA_EnumState();
 	char buf[1024], *b;
@@ -693,19 +693,19 @@ fixed_t LUA_EvalMath(const char *word)
 	}
 	*b = '\0';
 
-	if (fenv_ref == LUA_NOREF)
+	if (enum_env == LUA_NOREF)
 	{
 		lua_createtable(L, 0, 1);
 		lua_getmetatable(L, LUA_GLOBALSINDEX);
 		lua_setmetatable(L, -2);
-		fenv_ref = luaL_ref(L, LUA_REGISTRYINDEX);
+		enum_env = luaL_ref(L, LUA_REGISTRYINDEX);
 	}
 
 	lua_settop(L, 0);
-	lua_pushthread(L);
+	lua_pushvalue(L, LUA_GLOBALSINDEX);
 
-	lua_getref(L, fenv_ref);
-	lua_setfenv(L, 1);
+	lua_getref(L, enum_env);
+	lua_replace(L, LUA_GLOBALSINDEX);
 
 	lua_mathlib = true;
 
@@ -722,8 +722,8 @@ fixed_t LUA_EvalMath(const char *word)
 
 	lua_mathlib = false;
 
-	lua_pushvalue(L, LUA_GLOBALSINDEX);
-	lua_setfenv(L, 1);
+	lua_settop(L, 1);
+	lua_replace(L, LUA_GLOBALSINDEX);
 
 	return res;
 }