diff --git a/src/editor/editloop.cpp b/src/editor/editloop.cpp
index 1b0fabbe6..d9069c5a4 100644
--- a/src/editor/editloop.cpp
+++ b/src/editor/editloop.cpp
@@ -935,7 +935,8 @@ global void EditorUpdateDisplay(void)
     //  Menu button
     //
     DrawMenuButton(TheUI.MenuButton.Button,
-	    (ButtonUnderCursor == 0 ? MenuButtonActive : 0)|
+	    (ButtonAreaUnderCursor == ButtonAreaMenu
+		&& ButtonUnderCursor == 0 ? MenuButtonActive : 0)|
 	    (GameMenuButtonClicked ? MenuButtonClicked : 0),
 	    TheUI.MenuButton.Width, TheUI.MenuButton.Height,
 	    TheUI.MenuButton.X,TheUI.MenuButton.Y,
@@ -998,7 +999,8 @@ local void EditorCallbackButtonUp(unsigned button)
 
     if ((1<<button) == LeftButton && GameMenuButtonClicked == 1) {
 	GameMenuButtonClicked = 0;
-	if (ButtonUnderCursor == 0) {
+	if (ButtonAreaUnderCursor == ButtonAreaMenu
+		&& ButtonUnderCursor == ButtonUnderMenu) {
 	    ProcessMenu("menu-editor", 1);
 	}
     }
@@ -1019,7 +1021,8 @@ local void EditorCallbackButtonDown(unsigned button __attribute__ ((unused)))
     //
     //  Click on menu button
     //
-    if (CursorOn == CursorOnButton && ButtonUnderCursor == 0
+    if (CursorOn == CursorOnButton && ButtonAreaUnderCursor == ButtonAreaMenu
+	    && ButtonUnderCursor == ButtonUnderMenu
 	    && (MouseButtons & LeftButton) && !GameMenuButtonClicked) {
 	PlayGameSound(GameSounds.Click.Sound, MaxSampleVolume);
 	GameMenuButtonClicked = 1;
@@ -1564,6 +1567,7 @@ local void EditorCallbackMouse(int x, int y)
     CursorOn = -1;
     CursorPlayer = -1;
     CursorUnitIndex = -1;
+    ButtonAreaUnderCursor = -1;
     ButtonUnderCursor = -1;
 
     //
@@ -1705,21 +1709,18 @@ local void EditorCallbackMouse(int x, int y)
 	SetStatusLine("Tile mode");
 	return;
     }
-#if 0
-    for (i = 0; i < (int)(sizeof(TheUI.Buttons)/sizeof(*TheUI.Buttons)); ++i) {
-	if (x < TheUI.Buttons[i].X
-		|| x > TheUI.Buttons[i].X + TheUI.Buttons[i].Width
-		|| y < TheUI.Buttons[i].Y
-		|| y > TheUI.Buttons[i].Y + TheUI.Buttons[i].Height) {
-	    continue;
+    if( TheUI.MenuButton.X!=-1 ) {
+	if( x>=TheUI.MenuButton.X
+		&& x<=TheUI.MenuButton.X+TheUI.MenuButton.Width
+		&& y>TheUI.MenuButton.Y
+		&& y<=TheUI.MenuButton.Y+TheUI.MenuButton.Height ) {
+	    ButtonAreaUnderCursor=ButtonAreaMenu;
+	    ButtonUnderCursor=ButtonUnderMenu;
+	    CursorOn=CursorOnButton;
+	    MustRedraw|=RedrawMenuButton;
+	    return;
 	}
-	DebugLevel3("On button %d\n" _C_ i);
-	ButtonUnderCursor = i;
-	CursorOn = CursorOnButton;
-	ClearStatusLine();
-	return;
     }
-#endif
 
     //
     //  Minimap