diff --git a/src/p_user.c b/src/p_user.c
index 0140bee4dec4992ede5e58c1c0c1386b82a37891..d61a179f5db11d56d776d80722471b02144de992 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -7743,9 +7743,12 @@ void P_ElementalFire(player_t *player, boolean cropcircle)
 	I_Assert(!P_MobjWasRemoved(player->mo));
 
 	if (player->mo->eflags & MFE_VERTICALFLIP)
-		ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_SPINFIRE].height - 1, player->mo->scale);
+		ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_SPINFIRE].height, player->mo->scale);
 	else
-		ground = player->mo->floorz + 1;
+		ground = player->mo->floorz;
+
+	if (cropcircle)
+		ground += P_MobjFlip(player->mo);
 
 	if (cropcircle)
 	{