diff --git a/src/p_enemy.c b/src/p_enemy.c
index 1dc2656764b5b1aecb9201a3bd496a6326ab4c2b..f61f2a09b7b23a1304885ced1b906beac113463f 100644
--- a/src/p_enemy.c
+++ b/src/p_enemy.c
@@ -13325,8 +13325,8 @@ static void P_SnapperLegPlace(mobj_t *mo)
 	fixed_t rad = mo->radius;
 	INT32 necklen = (32*(mo->info->reactiontime - mo->reactiontime))/mo->info->reactiontime; // Not in FU
 
-	P_TryMove(seg, mo->x + FixedMul(c, rad) + necklen*c, mo->y + FixedMul(s, rad) + necklen*s, true);
 	seg->z = mo->z + mo->height/3;
+	P_TryMove(seg, mo->x + FixedMul(c, rad) + necklen*c, mo->y + FixedMul(s, rad) + necklen*s, true);
 	seg->angle = a;
 
 	// Move as many legs as available.
@@ -13346,6 +13346,7 @@ static void P_SnapperLegPlace(mobj_t *mo)
 		{
 			x = c*o2 + s*o1;
 			y = s*o2 - c*o1;
+			seg->z = mo->z;
 			P_TryMove(seg, x0 + x, y0 + y, true);
 			P_SetMobjState(seg, seg->info->raisestate);
 		}