diff --git a/src/p_mobj.c b/src/p_mobj.c
index e44279347efd6f20c36a2b139f26bf727a5a188c..7d48ca60c6fd7348fbd30ba0a66e81d4e91e478d 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -2278,8 +2278,10 @@ static boolean P_ZMovement(mobj_t *mo)
 			mo->z = mo->floorz;
 
 #ifdef ESLOPE
-		P_TryMove(mo, mo->x, mo->y, true); // Sets mo->standingslope correctly
-		if (mo->standingslope) {
+		P_CheckPosition(mo, mo->x, mo->y); // Sets mo->standingslope correctly
+		if ((mo->eflags & MFE_VERTICALFLIP) ? tmceilingslope : tmfloorslope) {
+			mo->standingslope = (mo->eflags & MFE_VERTICALFLIP) ? tmceilingslope : tmfloorslope;
+
 			// Reverse quantizing might could use its own function later
 			mo->standingslope->zangle = ANGLE_MAX-mo->standingslope->zangle;
 			P_QuantizeMomentumToSlope(&mom, mo->standingslope);