diff --git a/Source/Core/Config/GameConfiguration.cs b/Source/Core/Config/GameConfiguration.cs
index cbd6f5d765facbe3d4a07586e32ec4e1a33c4925..4c9e3e04a71376c24f7da99109c6dc20474b9de1 100644
--- a/Source/Core/Config/GameConfiguration.cs
+++ b/Source/Core/Config/GameConfiguration.cs
@@ -1052,9 +1052,9 @@ namespace CodeImp.DoomBuilder.Config
 				for(int j = options[i].Bits.Count - 1; j > -1; j--)
 				{
 					GeneralizedBit bit = options[i].Bits[j];
+					if(bit.Index > cureffect) continue;
 					if(bit.Index > 0 && (cureffect & bit.Index) == bit.Index) return true;
 					cureffect -= bit.Index;
-					if(cureffect < 1) return false;
 				}
 			}
 
diff --git a/Source/Core/Controls/ActionSelectorControl.cs b/Source/Core/Controls/ActionSelectorControl.cs
index 852e80a426ec406916c6ce810fe8084836a218d9..53cb82b7e42839cddb36b8a05428a2fc44e73156 100644
--- a/Source/Core/Controls/ActionSelectorControl.cs
+++ b/Source/Core/Controls/ActionSelectorControl.cs
@@ -218,6 +218,11 @@ namespace CodeImp.DoomBuilder.Controls
 				list.SelectedIndex = itemindex;
 				list.Refresh();
 			}
+			//mxd. This may be generalized effect, and it may've changed
+			else if(itemindex == -1)
+			{
+				list.Refresh();
+			}
 
 			// Raise change event
 			//mxd. This HAS to be raised during Edit form setup, otherwise TypeHandlers in ArgumentBoxes won't be initialized
diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs
index 278a829957463c4e947659af87bc954bed9686c3..b84e25beb0035f2939e1e8716db4980a75cef70d 100644
--- a/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs
+++ b/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs
@@ -516,14 +516,17 @@ namespace CodeImp.DoomBuilder.BuilderModes
 							s.CeilSlopeOffset = -Vector3D.DotProduct(s.CeilSlope, new Vector3D(center + offset, ceiling.GetZ(center)));
 						}
 					}
-				}
-				
-				// Update cached values
-				General.Map.Map.Update();
 
-				// Done
-				Cursor.Current = Cursors.Default;
-				General.Map.IsChanged = true;
+					// Update cached values
+					General.Map.Map.Update();
+
+					//mxd. Let the plugins know
+					General.Editing.AcceptMode();
+
+					// Done
+					Cursor.Current = Cursors.Default;
+					General.Map.IsChanged = true;
+				}
 			}
 		}
 
diff --git a/Source/Plugins/TagExplorer/BuilderPlug.cs b/Source/Plugins/TagExplorer/BuilderPlug.cs
index d4b1e31641270e4b6e78030ac10ae8045f795301..ce2137e03a03ec978e6c05a9f6d4069dd190f530 100644
--- a/Source/Plugins/TagExplorer/BuilderPlug.cs
+++ b/Source/Plugins/TagExplorer/BuilderPlug.cs
@@ -74,6 +74,12 @@ namespace CodeImp.DoomBuilder.TagExplorer
 			if(tagExplorer != null) tagExplorer.UpdateTreeSoon();
 		}
 
+		// Edit performed
+		public override void OnEditAccept()
+		{
+			if(tagExplorer != null) tagExplorer.UpdateTreeSoon();
+		}
+
 		public override void OnActionEnd(Actions.Action action) 
 		{
 			if(tagExplorer != null && action.Name == "builder_deleteitem")