diff --git a/Source/Plugins/BuilderModes/General/BuilderPlug.cs b/Source/Plugins/BuilderModes/General/BuilderPlug.cs
index 02576644181fa1a1794f80633e201accdedc39af..2f08fefb91b8d58156ac4422bead3b96b4a10d82 100755
--- a/Source/Plugins/BuilderModes/General/BuilderPlug.cs
+++ b/Source/Plugins/BuilderModes/General/BuilderPlug.cs
@@ -150,6 +150,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		private bool useoppositesmartpivothandle;
 		private bool selectchangedafterundoredo;
 		private bool selectadjacentvisualvertexslopehandles;
+		private bool usebuggyfloodselect;
 
 		#endregion
 
@@ -211,6 +212,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public bool UseOppositeSmartPivotHandle { get { return useoppositesmartpivothandle; } internal set { useoppositesmartpivothandle = value; } }
 		public bool SelectChangedafterUndoRedo { get { return selectchangedafterundoredo; } internal set { selectchangedafterundoredo = value; } }
 		public bool SelectAdjacentVisualVertexSlopeHandles { get { return selectadjacentvisualvertexslopehandles; } internal set { selectadjacentvisualvertexslopehandles = value; } }
+		public bool UseBuggyFloodSelect { get { return usebuggyfloodselect; } internal set { usebuggyfloodselect = value; } }
 
 		//mxd. "Make Door" action persistent settings
 		internal MakeDoorSettings MakeDoor;
@@ -324,6 +326,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			eventlinedistinctcolors = General.Settings.ReadPluginSetting("eventlinedistinctcolors", true);
 			useoppositesmartpivothandle = General.Settings.ReadPluginSetting("useoppositesmartpivothandle", true);
 			selectchangedafterundoredo = General.Settings.ReadPluginSetting("selectchangedafterundoredo", false);
+			usebuggyfloodselect = General.Settings.ReadPluginSetting("usebuggyfloodselect", false);
 		}
 
 		//mxd. Load settings, which can be changed via UI
diff --git a/Source/Plugins/BuilderModes/Interface/PreferencesForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/PreferencesForm.Designer.cs
index aa23d90fa9675546f454687e5023cc3c7852da18..e58bc14f5b70dd2dec9069b3fd3d026056cc0919 100755
--- a/Source/Plugins/BuilderModes/Interface/PreferencesForm.Designer.cs
+++ b/Source/Plugins/BuilderModes/Interface/PreferencesForm.Designer.cs
@@ -80,6 +80,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.label10 = new System.Windows.Forms.Label();
 			this.label1 = new System.Windows.Forms.Label();
 			this.heightbysidedef = new System.Windows.Forms.ComboBox();
+			this.usebuggyfloodselect = new System.Windows.Forms.CheckBox();
 			this.tabs.SuspendLayout();
 			this.taboptions.SuspendLayout();
 			this.groupBox5.SuspendLayout();
@@ -275,6 +276,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			// 
 			// groupBox3
 			// 
+			this.groupBox3.Controls.Add(this.usebuggyfloodselect);
 			this.groupBox3.Controls.Add(this.selectafterundoredo);
 			this.groupBox3.Controls.Add(this.useoppositesmartpivothandle);
 			this.groupBox3.Controls.Add(this.additivepaintselect);
@@ -291,7 +293,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.groupBox3.Controls.Add(this.additiveselect);
 			this.groupBox3.Location = new System.Drawing.Point(284, 139);
 			this.groupBox3.Name = "groupBox3";
-			this.groupBox3.Size = new System.Drawing.Size(379, 360);
+			this.groupBox3.Size = new System.Drawing.Size(379, 390);
 			this.groupBox3.TabIndex = 3;
 			this.groupBox3.TabStop = false;
 			this.groupBox3.Text = " Options ";
@@ -732,6 +734,16 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			this.heightbysidedef.Size = new System.Drawing.Size(309, 21);
 			this.heightbysidedef.TabIndex = 0;
 			// 
+			// usebuggyfloodselect
+			// 
+			this.usebuggyfloodselect.AutoSize = true;
+			this.usebuggyfloodselect.Location = new System.Drawing.Point(13, 359);
+			this.usebuggyfloodselect.Name = "usebuggyfloodselect";
+			this.usebuggyfloodselect.Size = new System.Drawing.Size(206, 17);
+			this.usebuggyfloodselect.TabIndex = 13;
+			this.usebuggyfloodselect.Text = "Use buggy flood select in Visual Mode";
+			this.usebuggyfloodselect.UseVisualStyleBackColor = true;
+			// 
 			// PreferencesForm
 			// 
 			this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -812,5 +824,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		private System.Windows.Forms.ComboBox eventlinelabelstyle;
 		private System.Windows.Forms.CheckBox useoppositesmartpivothandle;
 		private System.Windows.Forms.CheckBox selectafterundoredo;
+		private System.Windows.Forms.CheckBox usebuggyfloodselect;
 	}
 }
\ No newline at end of file
diff --git a/Source/Plugins/BuilderModes/Interface/PreferencesForm.cs b/Source/Plugins/BuilderModes/Interface/PreferencesForm.cs
index 98457f5450c8d6500c1a5b8c2c24584eb65e6ef1..8e7f6008dcbbf256361eb639f69b520b2e9157b0 100755
--- a/Source/Plugins/BuilderModes/Interface/PreferencesForm.cs
+++ b/Source/Plugins/BuilderModes/Interface/PreferencesForm.cs
@@ -69,6 +69,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			eventlinelabelstyle.SelectedIndex = General.Settings.ReadPluginSetting("eventlinelabelstyle", 2);
 			useoppositesmartpivothandle.Checked = General.Settings.ReadPluginSetting("useoppositesmartpivothandle", true);
 			selectafterundoredo.Checked = General.Settings.ReadPluginSetting("selectchangedafterundoredo", false);
+			usebuggyfloodselect.Checked = General.Settings.ReadPluginSetting("usebuggyfloodselect", false);
 		}
 
 		#endregion
@@ -101,6 +102,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			General.Settings.WritePluginSetting("eventlinelabelstyle", eventlinelabelstyle.SelectedIndex);
 			General.Settings.WritePluginSetting("useoppositesmartpivothandle", useoppositesmartpivothandle.Checked);
 			General.Settings.WritePluginSetting("selectchangedafterundoredo", selectafterundoredo.Checked);
+			General.Settings.WritePluginSetting("usebuggyfloodselect", usebuggyfloodselect.Checked);
 			General.Settings.SwitchViewModes = switchviewmodes.Checked; //mxd
 			General.Settings.SplitLineBehavior = (SplitLineBehavior)splitbehavior.SelectedIndex;//mxd
 			
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
index 7e12a6a34213ffeb9aa2f887b7f19b3a4419a3c4..a5a76dce7f0e9b59c9651668303305e7ba9416b1 100755
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs
@@ -98,7 +98,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		// This changes the height
 		protected abstract void ChangeHeight(int amount);
 		protected abstract void ChangeTextureScale(int incrementX, int incrementY); //mxd
-		public virtual void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight) { } //mxd
+		public virtual void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 
 		//mxd
 		override public void PerformAutoSelection()
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
index eed8e58908fc4a90861b50497a41f8aba3cab287..5291ebfdb26841466f6dee49c5091c46a9a02c63 100755
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs
@@ -585,12 +585,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		}
 
 		//mxd
-        public void SelectNeighbours(bool select, bool matchtexture, bool matchheight)
+        public void SelectNeighbours(bool select, bool matchtexture, bool matchheight, bool stopatselected)
         {
-            SelectNeighbours(select, matchtexture, matchheight, true, true);
+            SelectNeighbours(select, matchtexture, matchheight, true, true, stopatselected);
         }
 
-		private void SelectNeighbours(bool select, bool matchtexture, bool matchheight, bool clearlinedefs, bool forward)
+		private void SelectNeighbours(bool select, bool matchtexture, bool matchheight, bool clearlinedefs, bool forward, bool stopatselected)
 		{
 			if(Sidedef.Sector == null || Triangles < 1 || (!matchtexture && !matchheight)) return;
 
@@ -618,21 +618,21 @@ namespace CodeImp.DoomBuilder.BuilderModes
             if (forward)
             {
                 v = Sidedef.IsFront ? Sidedef.Line.End : Sidedef.Line.Start;
-                SelectNeighbourLines(v.Linedefs, v, rect, select, matchtexture, matchheight, true);
+                SelectNeighbourLines(v.Linedefs, v, rect, select, matchtexture, matchheight, true, stopatselected);
                 v = Sidedef.IsFront ? Sidedef.Line.Start : Sidedef.Line.End;
-                SelectNeighbourLines(v.Linedefs, v, rect, select, matchtexture, matchheight, false);
+                SelectNeighbourLines(v.Linedefs, v, rect, select, matchtexture, matchheight, false, stopatselected);
             }
             else
             {
                 v = Sidedef.IsFront ? Sidedef.Line.Start : Sidedef.Line.End;
-                SelectNeighbourLines(v.Linedefs, v, rect, select, matchtexture, matchheight, false);
+                SelectNeighbourLines(v.Linedefs, v, rect, select, matchtexture, matchheight, false, stopatselected);
                 v = Sidedef.IsFront ? Sidedef.Line.End : Sidedef.Line.Start;
-                SelectNeighbourLines(v.Linedefs, v, rect, select, matchtexture, matchheight, true);
+                SelectNeighbourLines(v.Linedefs, v, rect, select, matchtexture, matchheight, true, stopatselected);
             }
 		}
 
 		//mxd
-		private void SelectNeighbourLines(IEnumerable<Linedef> lines, Vertex v, Rectangle sourcerect, bool select, bool matchtexture, bool matchheight, bool forward)
+		private void SelectNeighbourLines(IEnumerable<Linedef> lines, Vertex v, Rectangle sourcerect, bool select, bool matchtexture, bool matchheight, bool forward, bool stopatselected)
 		{
 			foreach(Linedef line in lines)
 			{
@@ -650,12 +650,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
                 if (next == null || next.Sector == null)
                     continue;
 
-                SelectNeighbourSideParts(next, sourcerect, select, matchtexture, matchheight, forward);
+                SelectNeighbourSideParts(next, sourcerect, select, matchtexture, matchheight, forward, stopatselected);
 			}
 		}
 
 		//mxd
-		private void SelectNeighbourSideParts(Sidedef side, Rectangle sourcerect, bool select, bool matchtexture, bool matchheight, bool forward)
+		private void SelectNeighbourSideParts(Sidedef side, Rectangle sourcerect, bool select, bool matchtexture, bool matchheight, bool forward, bool stopatselected)
 		{
             if (side.Line.Marked)
                 return;
@@ -664,30 +664,30 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			if(s != null)
 			{
 				VisualSidedefParts parts = s.GetSidedefParts(side);
-				SelectNeighbourSidePart(parts.lower, sourcerect, select, matchtexture, matchheight, forward);
-				SelectNeighbourSidePart(parts.middlesingle, sourcerect, select, matchtexture, matchheight, forward);
-				SelectNeighbourSidePart(parts.middledouble, sourcerect, select, matchtexture, matchheight, forward);
-				SelectNeighbourSidePart(parts.upper, sourcerect, select, matchtexture, matchheight, forward);
+				SelectNeighbourSidePart(parts.lower, sourcerect, select, matchtexture, matchheight, forward, stopatselected);
+				SelectNeighbourSidePart(parts.middlesingle, sourcerect, select, matchtexture, matchheight, forward, stopatselected);
+				SelectNeighbourSidePart(parts.middledouble, sourcerect, select, matchtexture, matchheight, forward, stopatselected);
+				SelectNeighbourSidePart(parts.upper, sourcerect, select, matchtexture, matchheight, forward, stopatselected);
 
 				if(parts.middle3d != null)
 				{
 					foreach(VisualMiddle3D middle3D in parts.middle3d)
-						SelectNeighbourSidePart(middle3D, sourcerect, select, matchtexture, matchheight, forward);
+						SelectNeighbourSidePart(middle3D, sourcerect, select, matchtexture, matchheight, forward, stopatselected);
 				}
 			}
 		}
 
 		//mxd
-		private void SelectNeighbourSidePart(BaseVisualGeometrySidedef visualside, Rectangle sourcerect, bool select, bool matchtexture, bool matchheight, bool forward)
+		private void SelectNeighbourSidePart(BaseVisualGeometrySidedef visualside, Rectangle sourcerect, bool select, bool matchtexture, bool matchheight, bool forward, bool stopatselected)
 		{
-			if(visualside != null && visualside.Triangles > 0 && visualside.Selected != select)
+			if (visualside != null && visualside.Triangles > 0 && !visualside.Sidedef.Marked && (!stopatselected || (visualside.Selected != select)))
 			{
 				Rectangle r = BuilderModesTools.GetSidedefPartSize(visualside);
 				if(r.Width == 0 || r.Height == 0) return;
 				if((!matchtexture || (visualside.Texture == Texture && r.IntersectsWith(sourcerect))) &&
 				   (!matchheight || (sourcerect.Height == r.Height && sourcerect.Y == r.Y)))
 				{
-					visualside.SelectNeighbours(select, matchtexture, matchheight, false, forward);
+					visualside.SelectNeighbours(select, matchtexture, matchheight, false, forward, stopatselected);
 				}
 			}
 		}
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
index 72504fbcc36e392622cd1a0e8685d00cebc50674..5af4b021e03a712b3e5e692a13d26a993c3f8308 100755
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
@@ -2662,17 +2662,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			//mxd
 			if((General.Interface.ShiftState || General.Interface.CtrlState) && selectedobjects.Count > 0) 
 			{
-				if(General.Interface.AltState)
+				if (General.Interface.AltState || !BuilderPlug.Me.UseBuggyFloodSelect)
 				{
-					target.SelectNeighbours(target.Selected, General.Interface.ShiftState, General.Interface.CtrlState);
+					target.SelectNeighbours(target.Selected, General.Interface.ShiftState, General.Interface.CtrlState, General.Interface.AltState);
 				}
 				else
 				{
 					IVisualEventReceiver[] selection = new IVisualEventReceiver[selectedobjects.Count];
 					selectedobjects.CopyTo(selection);
-					
-					foreach(IVisualEventReceiver obj in selection)
-						obj.SelectNeighbours(target.Selected, General.Interface.ShiftState, General.Interface.CtrlState);
+
+					foreach (IVisualEventReceiver obj in selection)
+						obj.SelectNeighbours(target.Selected, General.Interface.ShiftState, General.Interface.CtrlState, false);
 				}
 			}
 
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs
index 178ca04106864f65993fa5ce8c691c52196f3563..08f3579d2168e0e4582b50d29ccd2becb97f2ba4 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs
@@ -127,7 +127,7 @@ namespace CodeImp.DoomBuilder.VisualModes
 		public void ApplyTexture(string texture) { }
 		public void ApplyUpperUnpegged(bool set) { }
 		public void ApplyLowerUnpegged(bool set) { }
-		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight) { } //mxd
+		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 		public virtual void OnPaintSelectEnd() { } // biwa
 		public void OnChangeScale(int x, int y) { }
 		public void OnResetTextureOffset() { }
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs
index 8fe8ac841d19fe81fb8f1176fae3446a873f64df..e796a1693cf5d7bd913233226384de82ca106836 100755
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs
@@ -673,7 +673,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public void ApplyTexture(string texture) { }
 		public void ApplyUpperUnpegged(bool set) { }
 		public void ApplyLowerUnpegged(bool set) { }
-		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight) { } //mxd
+		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 		public virtual void OnPaintSelectEnd() { } // biwa
 
 		// Return texture name
diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs
index 6c93f6ca484251596772ec23cbfb91ae8131bbfc..ac0d3aae2559258a2a6d8c425da748a03f70d7b7 100755
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs
@@ -261,7 +261,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public void ApplyUpperUnpegged(bool set) { }
 		public void ApplyLowerUnpegged(bool set) { }
 		public string GetTextureName() { return ""; }
-		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight) { } //mxd
+		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 		public virtual void OnPaintSelectBegin() { } // biwa
 		public virtual void OnPaintSelectEnd() { } // biwa
 
diff --git a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs
index 7e22f377b9893a402a2184d616a3d4aeda49bf86..c3a592500b1664f36af2c9855b29aaddb5f49d7f 100755
--- a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs
@@ -64,6 +64,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		
 		// Other methods
 		string GetTextureName();
-		void SelectNeighbours(bool select, bool matchtexture, bool matchheight); //mxd
+		void SelectNeighbours(bool select, bool matchtexture, bool matchheight, bool stopatselected); //mxd
 	}
 }
diff --git a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs
index cdf113a6b60158f7aaf14b3578790d4c664db1c9..b27271e8e65344b89eae259e9b985dc96f263c4f 100755
--- a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs
@@ -59,6 +59,6 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		public void ApplyUpperUnpegged(bool set) { }
 		public void ApplyLowerUnpegged(bool set) { }
 		public string GetTextureName() { return "";	}
-		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight) { } //mxd
+		public void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) { } //mxd
 	}
 }
diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs b/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs
index cae40b779549aaf0657316dde3023e6d91b4b009..7ba185d5e4d15bbffa10f7503f6d472076cdef3a 100755
--- a/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs
@@ -582,7 +582,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		}
 
 		//mxd
-		public override void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight) 
+		public override void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) 
 		{
 			if(!withSameTexture && !withSameHeight) return;
 
@@ -618,7 +618,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 
 							//(de)select regular visual floor?
 							if(select != vs.Floor.Selected) 
-								vs.Floor.SelectNeighbours(select, withSameTexture, withSameHeight);
+								vs.Floor.SelectNeighbours(select, withSameTexture, withSameHeight, stopatselected);
 						}
 					} 
 					else // Regular ceiling or vavoom-type extra ceiling
@@ -631,7 +631,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 
 							//(de)select regular visual ceiling?
 							if(select != vs.Ceiling.Selected) 
-								vs.Ceiling.SelectNeighbours(select, withSameTexture, withSameHeight);
+								vs.Ceiling.SelectNeighbours(select, withSameTexture, withSameHeight, stopatselected);
 						}
 					}
 
@@ -642,7 +642,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 						if((!withSameTexture || level.sector.LongCeilTexture == ec.level.sector.LongCeilTexture) &&
 							(!withSameHeight || level.sector.CeilHeight == ec.level.sector.CeilHeight)) 
 						{
-							ec.SelectNeighbours(select, withSameTexture, withSameHeight);
+							ec.SelectNeighbours(select, withSameTexture, withSameHeight, stopatselected);
 						}
 					}
 
@@ -653,7 +653,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 						if((!withSameTexture || level.sector.LongCeilTexture == ef.Level.sector.LongFloorTexture) &&
 							(!withSameHeight || level.sector.CeilHeight == ef.Level.sector.FloorHeight)) 
 						{
-							ef.SelectNeighbours(select, withSameTexture, withSameHeight);
+							ef.SelectNeighbours(select, withSameTexture, withSameHeight, stopatselected);
 						}
 					}
 				}
diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs b/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs
index 40ddc92946b03ec9b24b3aab56b81bd12c1e3f75..78616ba72f293bc67079bc0d987a19f604bfea8b 100755
--- a/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs
@@ -507,7 +507,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		}
 
 		//mxd
-		public override void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight) 
+		public override void SelectNeighbours(bool select, bool withSameTexture, bool withSameHeight, bool stopatselected) 
 		{
 			if(!withSameTexture && !withSameHeight) return;
 
@@ -543,7 +543,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 
 							//(de)select regular visual ceiling?
 							if(select != vs.Ceiling.Selected) 
-								vs.Ceiling.SelectNeighbours(select, withSameTexture, withSameHeight);
+								vs.Ceiling.SelectNeighbours(select, withSameTexture, withSameHeight, stopatselected);
 						}
 					}
 					else // Regular floor or vavoom-type extrafloor
@@ -556,7 +556,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 
 							//(de)select regular visual floor?
 							if(select != vs.Floor.Selected) 
-								vs.Floor.SelectNeighbours(select, withSameTexture, withSameHeight);
+								vs.Floor.SelectNeighbours(select, withSameTexture, withSameHeight, stopatselected);
 						}
 					}
 
@@ -567,7 +567,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 						if((!withSameTexture || level.sector.LongFloorTexture == ef.level.sector.LongFloorTexture) &&
 							(!withSameHeight || level.sector.FloorHeight == ef.level.sector.FloorHeight)) 
 						{
-							ef.SelectNeighbours(select, withSameTexture, withSameHeight);
+							ef.SelectNeighbours(select, withSameTexture, withSameHeight, stopatselected);
 						}
 					}
 
@@ -578,7 +578,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
 						if((!withSameTexture || level.sector.LongFloorTexture == ec.Level.sector.LongCeilTexture) &&
 							(!withSameHeight || level.sector.FloorHeight == ec.Level.sector.CeilHeight)) 
 						{
-							ec.SelectNeighbours(select, withSameTexture, withSameHeight);
+							ec.SelectNeighbours(select, withSameTexture, withSameHeight, stopatselected);
 						}
 					}
 				}