diff --git a/src/p_mobj.c b/src/p_mobj.c
index d6a62c4ef813dbc29a7380144d2929cb14e0a544..2d1a5ed5eca09da4f18748a25be240ed08d3dcaa 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -1791,6 +1791,12 @@ void P_XYMovement(mobj_t *mo)
 	xmove = mo->momx;
 	ymove = mo->momy;
 
+	if (player)
+	{
+		xmove /= NEWTICRATERATIO;
+		ymove /= NEWTICRATERATIO;
+	}
+
 	oldx = mo->x;
 	oldy = mo->y;
 
@@ -2298,7 +2304,10 @@ static boolean P_ZMovement(mobj_t *mo)
 		mo->momz += mo->pmomz;
 		mo->eflags &= ~MFE_APPLYPMOMZ;
 	}
-	mo->z += mo->momz;
+	if (mo->player)
+		mo->z += mo->momz / NEWTICRATERATIO;
+	else
+		mo->z += mo->momz;
 
 	switch (mo->type)
 	{