diff --git a/src/p_slopes.c b/src/p_slopes.c
index 4e12b104f3f4a0d104b81ea93e8835777dc22442..8e646e7306a207fa4a5c1f19b295d2bc4e302e87 100644
--- a/src/p_slopes.c
+++ b/src/p_slopes.c
@@ -584,23 +584,28 @@ static pslope_t *P_NewVertexSlope(INT16 tag1, INT16 tag2, INT16 tag3, UINT8 flag
 //
 void P_CopySectorSlope(line_t *line)
 {
-   sector_t *fsec = line->frontsector;
-   int i, special = line->special;
+	sector_t *fsec = line->frontsector;
+	int i, special = line->special;
 
-   // Check for copy linedefs
-   for(i = -1; (i = P_FindSectorFromLineTag(line, i)) >= 0;)
-   {
-      sector_t *srcsec = sectors + i;
+	// Check for copy linedefs
+	for (i = -1; (i = P_FindSectorFromLineTag(line, i)) >= 0;)
+	{
+		sector_t *srcsec = sectors + i;
+
+		if ((special - 719) & 1 && !fsec->f_slope && srcsec->f_slope)
+			fsec->f_slope = srcsec->f_slope; //P_CopySlope(srcsec->f_slope);
+		if ((special - 719) & 2 && !fsec->c_slope && srcsec->c_slope)
+			fsec->c_slope = srcsec->c_slope; //P_CopySlope(srcsec->c_slope);
+	}
 
-      if((special - 719) & 1 && !fsec->f_slope && srcsec->f_slope)
-         fsec->f_slope = srcsec->f_slope; //P_CopySlope(srcsec->f_slope);
-      if((special - 719) & 2 && !fsec->c_slope && srcsec->c_slope)
-         fsec->c_slope = srcsec->c_slope; //P_CopySlope(srcsec->c_slope);
-   }
+	fsec->hasslope = true;
 
-   fsec->hasslope = true;
+	// if this is an FOF control sector, make sure any target sectors also are marked as having slopes
+	if (fsec->numattached)
+		for (i = 0; i < fsec->numattached; i++)
+			sectors[fsec->attached[i]].hasslope = true;
 
-   line->special = 0; // Linedef was use to set slopes, it finished its job, so now make it a normal linedef
+	line->special = 0; // Linedef was use to set slopes, it finished its job, so now make it a normal linedef
 }
 
 //