Index: class/Managed.Windows.Forms/System.Windows.Forms.VisualStyles/VisualStyleRenderer.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms.VisualStyles/VisualStyleRenderer.cs	(revision 103485)
+++ class/Managed.Windows.Forms/System.Windows.Forms.VisualStyles/VisualStyleRenderer.cs	(working copy)
@@ -501,6 +501,20 @@
 		}
 		#endregion
 
+		#region Private Instance Methods
+		internal void DrawBackgroundExcludingArea (IDeviceContext dc, Rectangle bounds, Rectangle excludedArea)
+		{
+			XplatUIWin32.RECT bounds_rect = XplatUIWin32.RECT.FromRectangle (bounds);
+			IntPtr hdc = dc.GetHdc ();
+			XplatUIWin32.Win32ExcludeClipRect (hdc, excludedArea.Left, excludedArea.Top, excludedArea.Right, excludedArea.Bottom);
+			UXTheme.DrawThemeBackground (theme, hdc, part, state, ref bounds_rect, IntPtr.Zero);
+			IntPtr hrgn = XplatUIWin32.Win32CreateRectRgn (excludedArea.Left, excludedArea.Top, excludedArea.Right, excludedArea.Bottom);
+			XplatUIWin32.Win32ExtSelectClipRgn (hdc, hrgn, (int)ClipCombineMode.RGN_OR);
+			XplatUIWin32.Win32DeleteObject (hrgn);
+			dc.ReleaseHdc ();
+		}
+		#endregion
+
 		#region Private Static Methods
 		private static bool IsElementKnownToBeSupported (string className, int part, int state)
 		{
Index: class/Managed.Windows.Forms/System.Windows.Forms/GroupBoxRenderer.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/GroupBoxRenderer.cs	(revision 103485)
+++ class/Managed.Windows.Forms/System.Windows.Forms/GroupBoxRenderer.cs	(working copy)
@@ -83,17 +83,11 @@
 						break;
 				}
 
-				// Don't paint over the background where we are going to put the text
-				Region old_clip = g.Clip;
-				g.SetClip (new Rectangle (bounds.Left + 9, bounds.Top, font_size.Width - 3, font_size.Height), System.Drawing.Drawing2D.CombineMode.Exclude);
-
 				if (groupBoxText == String.Empty)
 					vsr.DrawBackground (g, bounds);
 				else
-					vsr.DrawBackground (g, new_bounds);
+					vsr.DrawBackgroundExcludingArea (g, new_bounds, new Rectangle (bounds.Left + 9, bounds.Top, font_size.Width - 3, font_size.Height));
 
-				g.Clip = old_clip;
-
 				if (textColor == Color.Empty)
 					textColor = vsr.GetColor (ColorProperty.TextColor);
 
Index: class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs	(revision 103485)
+++ class/Managed.Windows.Forms/System.Windows.Forms/XplatUIWin32.cs	(working copy)
@@ -3387,7 +3387,7 @@
 		private extern static uint Win32GetLayeredWindowAttributes (IntPtr hwnd, out COLORREF pcrKey, out byte pbAlpha, out LayeredWindowAttributes pwdFlags);
 
 		[DllImport ("gdi32.dll", EntryPoint="DeleteObject", CallingConvention=CallingConvention.StdCall)]
-		private extern static bool Win32DeleteObject(IntPtr o);
+		public extern static bool Win32DeleteObject(IntPtr o);
 
 		[DllImport ("user32.dll", EntryPoint="GetKeyState", CallingConvention=CallingConvention.StdCall)]
 		private extern static short Win32GetKeyState(VirtualKeys nVirtKey);
