diff --git a/src/p_spec.c b/src/p_spec.c
index d567016349b1bd15651b7b6cf6d30bf93cbc1da1..b9343b4de09868176b744a8cc37ac3cc32c7f61f 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -7514,10 +7514,13 @@ static void Add_Scroller(INT32 type, fixed_t dx, fixed_t dy, INT32 control, INT3
 	if (type == sc_carry || type == sc_carry_ceiling)
 	{
 		sectors[affectee].specialflags |= SSF_CONVEYOR;
-		if ((type == sc_carry_ceiling) ^ is3dblock)
-			sectors[affectee].flags |= MSF_FLIPSPECIAL_CEILING;
-		else
-			sectors[affectee].flags |= MSF_FLIPSPECIAL_FLOOR;
+		if (is3dblock)
+		{
+			if (type == sc_carry)
+				sectors[affectee].flags |= MSF_FLIPSPECIAL_CEILING;
+			else
+				sectors[affectee].flags |= MSF_FLIPSPECIAL_FLOOR;
+		}
 	}
 	P_AddThinker(THINK_MAIN, &s->thinker);
 }