diff --git a/src/p_user.c b/src/p_user.c
index 06249d9ffd0a3577079cb8e07b536b05bb29db83..59ede2e628559c48f866372e51c5b40467798c7e 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -2814,14 +2814,13 @@ static void P_CheckQuicksand(player_t *player)
 	fixed_t sinkspeed;
 	fixed_t topheight, bottomheight;
 
-	if (!(player->mo->subsector->sector->ffloors &&
-		((!(player->mo->eflags & MFE_VERTICALFLIP) && player->mo->momz <= 0) ||
-			(player->mo->eflags & MFE_VERTICALFLIP && player->mo->momz >= 0))))
+	if (!(player->mo->subsector->sector->ffloors && P_MobjFlip(player->mo)*player->mo->momz <= 0))
 		return;
 
 	for (rover = player->mo->subsector->sector->ffloors; rover; rover = rover->next)
 	{
-		if (!(rover->fofflags & FOF_EXISTS)) continue;
+		if (!(rover->fofflags & FOF_EXISTS))
+			continue;
 
 		if (!(rover->fofflags & FOF_QUICKSAND))
 			continue;