diff --git a/src/p_mobj.c b/src/p_mobj.c
index 39c6731b81ab41b378f748eb42fe28762642c350..87e20fd4ac5c9135394ed15ba238fad8ed262f85 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -7740,7 +7740,8 @@ static void P_MobjSceneryThink(mobj_t *mobj)
 		break;
 	case MT_WATERDROP:
 		P_SceneryCheckWater(mobj);
-		if ((mobj->z <= mobj->floorz || mobj->z <= mobj->watertop)
+		if (((!(mobj->eflags & MFE_VERTICALFLIP) && (mobj->z <= mobj->floorz || mobj->z <= mobj->watertop))
+			|| (mobj->eflags & MFE_VERTICALFLIP && mobj->z + mobj->height >= mobj->ceilingz))
 			&& mobj->health > 0)
 		{
 			mobj->health = 0;