diff --git a/extras/conf/SRB2-22.cfg b/extras/conf/SRB2-22.cfg
index 969f645f3f23805d8085199eed5cbc5578f89ce2..a2f56880be3c4647d3478b2b71625e923bdc374d 100644
--- a/extras/conf/SRB2-22.cfg
+++ b/extras/conf/SRB2-22.cfg
@@ -2481,6 +2481,7 @@ linedeftypes
 			prefix = "(439)";
 			flags8text = "[3] Set delay by backside sector";
 			flags64text = "[6] Only existing";
+			flags8192text = "[13] Use backside textures";
 		}
 
 		440
@@ -6949,7 +6950,7 @@ thingtypes
 	{
 		color = 10; // Green
 		title = "Tutorial";
-		
+
 		799
 		{
 			title = "Tutorial Plant";
diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg
index fff9edf109b28ba8ada2ca7182cf93ad1b0a7e79..1dec9ab88116330f9a1bc77b751d3f90dea8abbc 100644
--- a/extras/conf/udb/Includes/SRB222_linedefs.cfg
+++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg
@@ -2593,7 +2593,7 @@ udmf
 				}
 			}
 		}
-		
+
 		190
 		{
 			title = "Rising";
@@ -4588,6 +4588,12 @@ udmf
 				type = 11;
 				enum = "yesno";
 			}
+			arg3
+			{
+				title = "Use backside textures?";
+				type = 11;
+				enum = "noyes";
+			}
 		}
 
 		440
diff --git a/src/p_setup.c b/src/p_setup.c
index 03a702b3061244ae1d1ebe50b8ce81e9c89bc1dd..ba432c13dfb7df45a3c530e86e11e1a09dfba8f8 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -5275,6 +5275,7 @@ static void P_ConvertBinaryLinedefTypes(void)
 			lines[i].args[0] = tag;
 			lines[i].args[1] = TMSD_FRONTBACK;
 			lines[i].args[2] = !!(lines[i].flags & ML_NOCLIMB);
+			lines[i].args[3] = !!(lines[i].flags & ML_EFFECT6);
 			break;
 		case 441: //Condition set trigger
 			lines[i].args[0] = sides[lines[i].sidenum[0]].textureoffset >> FRACBITS;
diff --git a/src/p_spec.c b/src/p_spec.c
index 3883ea2654c1ee942e1a6dae4ff7baca5a95f141..e61729a53ccb92d7787bdea0d1187a87d5e5c41d 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -2886,7 +2886,9 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 		case 439: // Set texture
 			{
 				size_t linenum;
-				side_t *set = &sides[line->sidenum[0]], *this;
+				side_t *setfront = &sides[line->sidenum[0]];
+				side_t *setback = (line->args[3] && line->sidenum[1] != 0xffff) ? &sides[line->sidenum[1]] : setfront;
+				side_t *this;
 				boolean always = !(line->args[2]); // If args[2] is set: Only change mid texture if mid texture already exists on tagged lines, etc.
 
 				for (linenum = 0; linenum < numlines; linenum++)
@@ -2901,18 +2903,18 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 					if (line->args[1] != TMSD_BACK)
 					{
 						this = &sides[lines[linenum].sidenum[0]];
-						if (always || this->toptexture) this->toptexture = set->toptexture;
-						if (always || this->midtexture) this->midtexture = set->midtexture;
-						if (always || this->bottomtexture) this->bottomtexture = set->bottomtexture;
+						if (always || this->toptexture) this->toptexture = setfront->toptexture;
+						if (always || this->midtexture) this->midtexture = setfront->midtexture;
+						if (always || this->bottomtexture) this->bottomtexture = setfront->bottomtexture;
 					}
 
 					// Back side
 					if (line->args[1] != TMSD_FRONT && lines[linenum].sidenum[1] != 0xffff)
 					{
 						this = &sides[lines[linenum].sidenum[1]];
-						if (always || this->toptexture) this->toptexture = set->toptexture;
-						if (always || this->midtexture) this->midtexture = set->midtexture;
-						if (always || this->bottomtexture) this->bottomtexture = set->bottomtexture;
+						if (always || this->toptexture) this->toptexture = setback->toptexture;
+						if (always || this->midtexture) this->midtexture = setback->midtexture;
+						if (always || this->bottomtexture) this->bottomtexture = setback->bottomtexture;
 					}
 				}
 			}