Index: class/Managed.Windows.Forms/System.Windows.Forms/MdiWindowManager.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/MdiWindowManager.cs	(revision 105189)
+++ class/Managed.Windows.Forms/System.Windows.Forms/MdiWindowManager.cs	(working copy)
@@ -414,7 +414,7 @@
 
 		public override void DrawMaximizedButtons (object sender, PaintEventArgs pe)
 		{
-			Size bs = ThemeEngine.Current.ManagedWindowButtonSize (this);
+			Size bs = ThemeEngine.Current.ManagedWindowGetMenuButtonSize (this);
 			Point pnt =  XplatUI.GetMenuOrigin (mdi_container.ParentForm.Handle);
 			int bw = ThemeEngine.Current.ManagedWindowBorderWidth (this);
 			TitleButtons buttons = MaximizedTitleButtons;
Index: class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs	(revision 105189)
+++ class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs	(working copy)
@@ -496,7 +496,7 @@
 		
 		public virtual Size MenuButtonSize {
 			get {
-				return new Size(18, 18);
+				return XplatUI.MenuButtonSize;
 			}
 		}
 
@@ -1018,6 +1018,7 @@
 		public abstract Size ManagedWindowButtonSize (InternalWindowManager wm);
 		public abstract void ManagedWindowSetButtonLocations (InternalWindowManager wm);
 		public abstract Rectangle ManagedWindowGetTitleBarIconArea (InternalWindowManager wm);
+		public abstract Size ManagedWindowGetMenuButtonSize (InternalWindowManager wm);
 		#endregion
 
 		#region	ControlPaint Methods
Index: class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(revision 105189)
+++ class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(working copy)
@@ -6131,6 +6131,14 @@
 			int bw = ManagedWindowBorderWidth (wm);
 			return new Rectangle (bw + 3, bw + 2, wm.IconWidth, wm.IconWidth);
 		}
+
+		public override Size ManagedWindowGetMenuButtonSize (InternalWindowManager wm)
+		{
+			Size result = SystemInformation.MenuButtonSize;
+			result.Width -= 2;
+			result.Height -= 4;
+			return result;
+		}
 		#endregion
 
 		#region ControlPaint
Index: class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs	(revision 105189)
+++ class/Managed.Windows.Forms/System.Windows.Forms/XplatUI.cs	(working copy)
@@ -268,6 +268,13 @@
 		}
 
 		static public Size MenuBarButtonSize { get { return driver.MenuBarButtonSize; } }
+
+		public static Size MenuButtonSize {
+			get {
+				return driver.MenuButtonSize;
+			}
+		}
+
 		static public int MenuShowDelay { get { return driver.MenuShowDelay; } }
 		
 		static public Size MinimizedWindowSize {
Index: class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs	(revision 105189)
+++ class/Managed.Windows.Forms/System.Windows.Forms/XplatUIDriver.cs	(working copy)
@@ -116,6 +116,11 @@
 		internal virtual bool IsTitleBarGradientEnabled { get { return false; } }
 		internal virtual bool IsToolTipAnimationEnabled { get { return false; } }
 		internal virtual Size MenuBarButtonSize { get { return new Size (19, 19); } }
+		public virtual Size MenuButtonSize {
+			get {
+				return new Size(18, 18);
+			}
+		}
 		internal virtual int MenuShowDelay { get { return 0; } }
 		
 		internal virtual Keys ModifierKeys {
Index: class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs	(revision 105189)
+++ class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs	(working copy)
@@ -1189,6 +1189,14 @@
 			}
 		}
 
+		public override Size MenuButtonSize {
+			get {
+				return new Size (
+					Win32GetSystemMetrics (SystemMetrics.SM_CXMENUSIZE),
+					Win32GetSystemMetrics (SystemMetrics.SM_CYMENUSIZE));
+			}
+		}
+
 		internal override int MenuShowDelay {
 			get { return GetSystemParametersInfoInt (SPIAction.SPI_GETMENUSHOWDELAY); }
 		}
