diff --git a/Source/Core/Editing/EditMode.cs b/Source/Core/Editing/EditMode.cs
index 6c8c35902f330fa1a5853e1ecafc203eace5c4a7..a2c4aa563851867290cde0234599ecfa2a68b3c0 100755
--- a/Source/Core/Editing/EditMode.cs
+++ b/Source/Core/Editing/EditMode.cs
@@ -260,6 +260,10 @@ namespace CodeImp.DoomBuilder.Editing
 		// Script events
 		public virtual bool OnScriptRunBegin() { return true; }
 		public virtual void OnScriptRunEnd() { }
+
+		// This should be called by global actions (i.e. that are not part of an editing mode) when they changed map elements,
+		// so that the mode can react to it (for example by rebuilding a blockmap)
+		public virtual void OnMapElementsChanged() { }
 		
 		#endregion
 	}
diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs
index ace4896608f7f8130015b6390b5aec51b3c7fdd7..20b06028b12635af653fcb48f9a21bf651565487 100755
--- a/Source/Core/General/MapManager.cs
+++ b/Source/Core/General/MapManager.cs
@@ -2643,6 +2643,9 @@ namespace CodeImp.DoomBuilder
 				undoredo.WithdrawUndo();
 			}
 
+			// Let the current editing mode know that we changed something
+			General.Editing.Mode.OnMapElementsChanged();
+
 			// Done
 			General.Interface.RedrawDisplay();
 			Cursor.Current = Cursors.Default;
diff --git a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs
index c7e2ee8bd90eee4f35ac540d79ad0bfe15a3d950..cbd3261fcf86706df1a0bce77f1630a35f058931 100755
--- a/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/LinedefsMode.cs
@@ -1217,6 +1217,16 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			return base.OnCopyBegin();
 		}
 
+		/// <summary>
+		/// If map elements have changed the blockmap needs to be recreated.
+		/// </summary>
+		public override void OnMapElementsChanged()
+		{
+			base.OnMapElementsChanged();
+
+			CreateBlockmap();
+		}
+
 		//mxd
 		private void RenderComment(Linedef l)
 		{
diff --git a/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs
index 7a3a6bcb1ec435fa210877c15c8e22a0d7b63c6c..9bf15d9b0a17e675e32b3a49b16e43b67d46a6b0 100755
--- a/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/SectorsMode.cs
@@ -1596,6 +1596,16 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			General.Interface.RedrawDisplay();
 		}
 
+		/// <summary>
+		/// If map elements have changed the blockmap needs to be recreated.
+		/// </summary>
+		public override void OnMapElementsChanged()
+		{
+			base.OnMapElementsChanged();
+
+			CreateBlockmap();
+		}
+
 		//mxd
 		public override void OnViewSelectionNumbersChanged(bool enabled)
 		{
diff --git a/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs b/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs
index ab07bd24ec6d9fa3fef486fbda7472bf31f4246a..ae68e7be3e9d86ea8ead33d420ea08497036a5e1 100755
--- a/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/VerticesMode.cs
@@ -759,7 +759,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			
 			return base.OnCopyBegin();
 		}
-		
+
+		/// <summary>
+		/// If map elements have changed the blockmap needs to be recreated.
+		/// </summary>
+		public override void OnMapElementsChanged()
+		{
+			base.OnMapElementsChanged();
+
+			CreateBlockmap();
+		}
+
 		#endregion
 
 		#region ================== Actions