diff --git a/haxe/ui/containers/menus/Menu.hx b/haxe/ui/containers/menus/Menu.hx
index 21e2ec104..e4a7af3bb 100644
--- a/haxe/ui/containers/menus/Menu.hx
+++ b/haxe/ui/containers/menus/Menu.hx
@@ -102,6 +102,10 @@ class MenuEvents extends haxe.ui.events.Events {
         unregisterEvent(UIEvent.SHOWN, onShown);
     }
 
+    public override function onDispose() {
+        removeScreenMouseDown();
+    }
+
     private var _over:Bool = false;
     private function onMouseOver(event:MouseEvent) {
         _over = true;
@@ -232,6 +236,10 @@ class MenuEvents extends haxe.ui.events.Events {
             return;
         }
 
+        if (currentSubMenu._isDisposed) { // sub menu could have already been disposed of
+            return;
+        }
+
         for (child in currentSubMenu.childComponents) {
             child.removeClass(":hover", true, true);
         }