diff --git a/src/p_spec.c b/src/p_spec.c
index e8b0bcc877afde11e93f71a4eaf74aab2f987cb2..cc2a2d253260c982939ca1f54c9cc4fea169c828 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -2906,8 +2906,8 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 						if (always || this->bottomtexture) this->bottomtexture = set->bottomtexture;
 					}
 
-					if (line->args[3] && lines[linenum].sidenum[1] != 0xffff)
-						set = &sides[line->sidenum[1]]; // Use back side textures
+					if (line->args[3] && line->sidenum[1] != 0xffff)
+						set = &sides[line->sidenum[1]]; // Use back side textures for target's back side
 
 					// Back side
 					if (line->args[1] != TMSD_FRONT && lines[linenum].sidenum[1] != 0xffff)
@@ -2917,6 +2917,8 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 						if (always || this->midtexture) this->midtexture = set->midtexture;
 						if (always || this->bottomtexture) this->bottomtexture = set->bottomtexture;
 					}
+
+					set = &sides[line->sidenum[0]]; // Go back to front side textures
 				}
 			}
 			break;