diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
index f63a73c26de766b2ea9ccca1bbbc471fa2955be6..f8ead4bea58f15d08ea295af39b1f24822a6efe2 100755
--- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
+++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs
@@ -3139,7 +3139,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
 		{
 			PreAction(UndoGroup.None);
 			List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true, true);
-			foreach(IVisualEventReceiver i in objs) i.OnDelete();
+            foreach (IVisualEventReceiver i in objs)
+            {
+                if (i is BaseVisualThing)
+                    visiblethings.Remove(((BaseVisualThing)i).Thing); // [ZZ] if any
+                i.OnDelete();
+            }
             PostAction();
 
 			ClearSelection();
@@ -3178,7 +3183,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
 			foreach(IVisualEventReceiver i in objs) 
 			{
 				BaseVisualThing thing = (BaseVisualThing)i;
-				thing.Thing.Fields.BeforeFieldsChange();
+                visiblethings.Remove(thing.Thing); // [ZZ] if any
+                thing.Thing.Fields.BeforeFieldsChange();
 				thing.Thing.Dispose();
 				thing.Dispose();
 			}