diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
index f8d9a183d277dff354041609451bc4a385d4fe4c..1c2ad7600ac0a6b8653b769803ddb1ac8f87a731 100644
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
@@ -1606,7 +1606,42 @@ namespace CodeImp.DoomBuilder.BuilderModes
 					sd.Sector.Marked = true;
 
 			// Make new blockmap
-			FillBlockMap();
+			foreach (MapElement e in General.Map.Map.RemovedElements)
+			{
+				if (e is Linedef)
+					blockmap.RemoveLinedef(e as Linedef);
+				else if (e is Thing)
+					blockmap.RemoveThing(e as Thing);
+				else if (e is Sector)
+					blockmap.RemoveSector(e as Sector);
+			}
+
+			foreach (Linedef l in General.Map.Map.Linedefs)
+			{
+				if (l.Marked)
+				{
+					blockmap.RemoveLinedef(l);
+					blockmap.AddLinedef(l);
+				}
+			}
+
+			foreach (Thing t in General.Map.Map.Things)
+			{
+				if (t.Marked)
+				{
+					blockmap.RemoveThing(t);
+					blockmap.AddThing(t);
+				}
+			}
+
+			foreach (Sector s in General.Map.Map.Sectors)
+			{
+				if (s.Marked)
+				{
+					blockmap.RemoveSector(s);
+					blockmap.AddSector(s);
+				}
+			}
 
 			RebuildElementData(true);