diff --git a/src/p_inter.c b/src/p_inter.c
index 163d47eabe783a64f633a1ad7cca1bc6ea5275e2..cd1e80de2dbbb1a231c3558c1b0e293812d84a33 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -1702,6 +1702,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 
 		case MT_CANARIVORE_GAS:
 			// if player and gas touch, attach gas to player (overriding any gas that already attached) and apply slowdown effect
+			special->flags |= MF_NOGRAVITY|MF_NOCLIPHEIGHT;
 			P_UnsetThingPosition(special);
 			special->x = toucher->x - toucher->momx/2;
 			special->y = toucher->y - toucher->momy/2;
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 971c03e6b47675e2c22e820d2a476e58a2bee3d0..5bf11134c3e5f28e08acb97a942e35586a4c790f 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -8524,7 +8524,6 @@ void P_MobjThinker(mobj_t *mobj)
 					momz = abs(mobj->momz);
 					if (R_PointToDist2(0, 0, mobj->momx, mobj->momy) < momz)
 						P_InstaThrust(mobj, R_PointToAngle2(0, 0, mobj->momx, mobj->momy), momz);
-					mobj->flags |= MF_NOGRAVITY|MF_NOCLIPHEIGHT;
 					mobj->flags2 |= MF2_AMBUSH;
 					break;
 				}