Index: class/Managed.Windows.Forms/System.Windows.Forms/InternalWindowManager.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/InternalWindowManager.cs	(revision 104925)
+++ class/Managed.Windows.Forms/System.Windows.Forms/InternalWindowManager.cs	(working copy)
@@ -423,8 +423,7 @@
 			if (form.Icon == null)
 				return false;
 
-			int bw = ThemeEngine.Current.ManagedWindowBorderWidth (this);
-			Rectangle icon = new Rectangle (bw + 3, bw + 2, IconWidth, IconWidth);
+			Rectangle icon = ThemeEngine.Current.ManagedWindowGetTitleBarIconArea (this);
 			return icon.Contains (x, y);
 		}
 
Index: class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs	(revision 104925)
+++ class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs	(working copy)
@@ -1044,6 +1044,8 @@
 			// Just making virtual for now so all the themes still build.
 		}
 
+		public abstract Rectangle ManagedWindowGetTitleBarIconArea (InternalWindowManager wm);
+
 		#region	ControlPaint Methods
 		public abstract void CPDrawBorder (Graphics graphics, Rectangle bounds, Color leftColor, int leftWidth,
 			ButtonBorderStyle leftStyle, Color topColor, int topWidth, ButtonBorderStyle topStyle,
Index: class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(revision 104925)
+++ class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(working copy)
@@ -6087,8 +6087,7 @@
 				draw_icon = !wm.IsToolWindow && form.Icon != null;
 #endif
 				if (draw_icon) {
-					Rectangle icon = new Rectangle (bdwidth + 3,
-							bdwidth + 2, wm.IconWidth, wm.IconWidth);
+					Rectangle icon = ManagedWindowGetTitleBarIconArea (wm);
 					if (icon.IntersectsWith (clip))
 						dc.DrawIcon (form.Icon, icon);
 				}
@@ -6130,6 +6129,12 @@
 					button.Caption, button.State);
 		}
 
+		public override Rectangle ManagedWindowGetTitleBarIconArea (InternalWindowManager wm)
+		{
+			int bw = ManagedWindowBorderWidth (wm);
+			return new Rectangle (bw + 3, bw + 2, wm.IconWidth, wm.IconWidth);
+		}
+
 		#region ControlPaint
 		public override void CPDrawBorder (Graphics graphics, Rectangle bounds, Color leftColor, int leftWidth,
 			ButtonBorderStyle leftStyle, Color topColor, int topWidth, ButtonBorderStyle topStyle,
