diff --git a/src/p_mobj.c b/src/p_mobj.c
index 547941e70b7dec0c31bed548d0e5b814aa3da099..68f4f40f683138c728aa1712b7021f4f1aca7229 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -1278,7 +1278,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
 
 		for (rover = mo->subsector->sector->ffloors; rover; rover = rover->next)
 		{
-			if (!P_InsideANonSolidFFloor(mo, rover)) // P_InsideANonSolidFFloor checks for FF_EXISTS itself
+			if (!(rover->flags & FF_EXISTS) || !P_InsideANonSolidFFloor(mo, rover)) // P_InsideANonSolidFFloor checks for FF_EXISTS itself, but let's not always call this function
 				continue;
 
 			if ((rover->flags & (FF_SWIMMABLE|FF_GOOWATER)) == (FF_SWIMMABLE|FF_GOOWATER))