diff --git a/src/p_floor.c b/src/p_floor.c
index 1de2277bb8ceb19f03a92d5081f0b19df75c8f91..a367a08d8433466a888072bc7757b90d4a5d2670 100644
--- a/src/p_floor.c
+++ b/src/p_floor.c
@@ -1870,12 +1870,11 @@ void EV_CrumbleChain(sector_t *sec, ffloor_t *rover)
 		}
 	}
 
-#undef controlsec
-
-	// soundorg z height never gets set normally, so MEH.
-	sec->soundorg.z = sec->floorheight;
+	sec->soundorg.z = (controlsec->floorheight + controlsec->ceilingheight)/2;
 	S_StartSound(&sec->soundorg, mobjinfo[type].activesound);
 
+#undef controlsec
+
 	// Find the outermost vertexes in the subsector
 	for (i = 0; i < sec->linecount; i++)
 	{