diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
index 7747022d590fc0b8a2d2c221dcd9b1c733213e63..7854faaac3638397f8ea38457091a1df6cd6bb33 100755
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
@@ -400,7 +400,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		protected virtual void SetTexture(string texturename) { }
 		public virtual void ApplyUpperUnpegged(bool set) { }
 		public virtual void ApplyLowerUnpegged(bool set) { }
-		public virtual void ApplyLineFlag(Linedef line, string flag, string name) { }
+		public virtual void ApplyLineFlag(string flag, string name) { }
 		protected abstract void MoveTextureOffset(int offsetx, int offsety);
 		protected abstract Point GetTextureOffset();
 		public virtual void OnPaintSelectEnd() { } // biwa
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
index 8e8f1868875304a5be548b3c7b7ef1606c506eca..bd1154385ed2f98f9fdedefea9e453a1c9e05973 100755
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
@@ -1063,7 +1063,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		// Toggle midtexture pegging
 		public virtual void OnTogglePegMidtexture()
 		{
-			mode.ApplyLineFlag(this.Sidedef.Line, "midpeg", "Peg Midtexture");
+			mode.ApplyLineFlag("midpeg", "Peg Midtexture");
 		}
 
 		// Toggle slope skew
@@ -1073,15 +1073,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			{
 				case VisualGeometryType.WALL_LOWER:
 				case VisualGeometryType.WALL_UPPER:
-					mode.ApplyLineFlag(this.Sidedef.Line, "skewtd", "Slope Skew");
-					break;
-
 				case VisualGeometryType.WALL_MIDDLE_3D:
-					mode.ApplyLineFlag(this.GetControlLinedef(), "skewtd", "Slope Skew");
+					mode.ApplyLineFlag("skewtd", "Slope Skew");
 					break;
 
 				case VisualGeometryType.WALL_MIDDLE:
-					mode.ApplyLineFlag(this.Sidedef.Line, "noskew", "No Midtexture Skew");
+					mode.ApplyLineFlag("noskew", "No Midtexture Skew");
 					break;
 			}
 		}
@@ -1149,8 +1146,13 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		}
 
 		// This sets a specified flag
-		public virtual void ApplyLineFlag(Linedef line, string flag, string name)
+		public virtual void ApplyLineFlag(string flag, string name)
 		{
+			Linedef line = this.Sidedef.Line;
+
+			if (this.GeometryType == VisualGeometryType.WALL_MIDDLE_3D)
+				line = this.GetControlLinedef();
+
 			if (line.IsFlagSet(flag))
 			{
 				// Remove flag
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
index 4ccf56e68547e69d08087beab0f355d57a81c1b8..67a732c30ebae4378e5f5546b7a0690d8c797b14 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
@@ -2249,12 +2249,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		}
 
 		// Apply specified flag
-		public void ApplyLineFlag(Linedef line, string flag, string name)
+		public void ApplyLineFlag(string flag, string name)
 		{
 			List<IVisualEventReceiver> objs = GetSelectedObjects(false, true, false, false, false);
 			foreach (IVisualEventReceiver i in objs)
 			{
-				i.ApplyLineFlag(line, flag, name);
+				i.ApplyLineFlag(flag, name);
 			}
 		}
 
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs
index c544c4304eba3ccb072fcab74374f022f3357fa4..70297db3e469d054e4a97a60c093b3b92f98bdfb 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs
@@ -129,7 +129,7 @@ namespace CodeImp.DoomBuilder.VisualModes
 		public void ApplyTexture(string texture) { }
 		public void ApplyUpperUnpegged(bool set) { }
 		public void ApplyLowerUnpegged(bool set) { }
-		public void ApplyLineFlag(Linedef line, string flag, string name) { }
+		public void ApplyLineFlag(string flag, string name) { }
 		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 		public virtual void OnPaintSelectEnd() { } // biwa
 		public void OnChangeScale(int x, int y) { }
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs
index ec81c7aeaa234e32f1051a3834298a34e96f3266..dff6e63b1496b9e17146aa27c2a03e21a5d52f1e 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs
@@ -723,7 +723,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public void ApplyTexture(string texture) { }
 		public void ApplyUpperUnpegged(bool set) { }
 		public void ApplyLowerUnpegged(bool set) { }
-		public void ApplyLineFlag(Linedef line, string flag, string name) { }
+		public void ApplyLineFlag(string flag, string name) { }
 		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 		public virtual void OnPaintSelectEnd() { } // biwa
 
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs
index 6526d8273be2bb4a983efd939880b9eab2d62f06..76715b32b464703a70e3b2ba00b40b52b9add3e6 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs
@@ -262,7 +262,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public void ApplyTexture(string texture) { }
 		public void ApplyUpperUnpegged(bool set) { }
 		public void ApplyLowerUnpegged(bool set) { }
-		public void ApplyLineFlag(Linedef line, string flag, string name) { }
+		public void ApplyLineFlag(string flag, string name) { }
 		public string GetTextureName() { return ""; }
 		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 		public virtual void OnPaintSelectBegin() { } // biwa
diff --git a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs
index b280b32f65a20e2ade4249393aae3cca364bb78d..896b93fc79470c66aa45bb6c127744379051858d 100644
--- a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs
@@ -64,7 +64,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		void ApplyTexture(string texture);
 		void ApplyUpperUnpegged(bool set);
 		void ApplyLowerUnpegged(bool set);
-		void ApplyLineFlag(Linedef line, string flag, string name);
+		void ApplyLineFlag(string flag, string name);
 
 		// Other methods
 		string GetTextureName();
diff --git a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs
index 5e35629c2f3536bfa171a72085a6ce38a16affcf..045ee2a5f713eab21ab0a82905de9c8ac02b938d 100644
--- a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs
@@ -61,7 +61,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public void ApplyTexture(string texture) { }
 		public void ApplyUpperUnpegged(bool set) { }
 		public void ApplyLowerUnpegged(bool set) { }
-		public void ApplyLineFlag(Linedef line, string flag, string name) { }
+		public void ApplyLineFlag(string flag, string name) { }
 		public string GetTextureName() { return "";	}
 		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 	}