Index: class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(revision 102283)
+++ class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(working copy)
@@ -4480,10 +4480,7 @@
 			Image backbuffer = new Bitmap (sb.ClientSize.Width, sb.ClientSize.Height, real_dc);
 			Graphics dc = Graphics.FromImage (backbuffer);
 			
-			bool is_color_control = sb.BackColor.ToArgb () == ColorControl.ToArgb ();
-
-			Brush brush = is_color_control ? SystemBrushes.Control : ResPool.GetSolidBrush (sb.BackColor);
-			dc.FillRectangle (brush, clip);
+			DrawStatusBarBackground (dc, clip, sb);
 			
 			if (!sb.ShowPanels && sb.Text != String.Empty) {
 				string text = sb.Text;
@@ -4519,10 +4516,8 @@
 				}
 			}
 
-			if (sb.SizingGrip) {
-				area = new Rectangle (area.Right - 16 - 2, area.Bottom - 12 - 1, 16, 16);
-				CPDrawSizeGrip (dc, ColorControl, area);
-			}
+			if (sb.SizingGrip)
+				DrawStatusBarSizingGrip (dc, clip, sb, area);
 			
 			real_dc.DrawImage (backbuffer, 0, 0);
 			dc.Dispose ();
@@ -4530,22 +4525,29 @@
 
 		}
 
+		protected virtual void DrawStatusBarBackground (Graphics dc, Rectangle clip, StatusBar sb)
+		{
+			bool is_color_control = sb.BackColor.ToArgb () == ColorControl.ToArgb ();
 
+			Brush brush = is_color_control ? SystemBrushes.Control : ResPool.GetSolidBrush (sb.BackColor);
+			dc.FillRectangle (brush, clip);
+		}
+
+		protected virtual void DrawStatusBarSizingGrip (Graphics dc, Rectangle clip, StatusBar sb, Rectangle area)
+		{
+			area = new Rectangle (area.Right - 16 - 2, area.Bottom - 12 - 1, 16, 16);
+			CPDrawSizeGrip (dc, ColorControl, area);
+		}
+
 		protected virtual void DrawStatusBarPanel (Graphics dc, Rectangle area, int index,
 			Brush br_forecolor, StatusBarPanel panel) {
 			int border_size = 3; // this is actually const, even if the border style is none
 			int icon_width = 16;
 			
 			area.Height -= border_size;
-			
-			if (panel.BorderStyle != StatusBarPanelBorderStyle.None) {
-				Border3DStyle border_style = Border3DStyle.SunkenOuter;
-				if (panel.BorderStyle == StatusBarPanelBorderStyle.Raised)
-					border_style = Border3DStyle.RaisedInner;
-					
-				CPDrawBorder3D(dc, area, border_style, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom, panel.Parent.BackColor);
-			}
-			
+
+			DrawStatusBarPanelBackground (dc, area, panel);
+
 			if (panel.Style == StatusBarPanelStyle.OwnerDraw) {
 				StatusBarDrawItemEventArgs e = new StatusBarDrawItemEventArgs (
 					dc, panel.Parent.Font, area, index, DrawItemState.Default,
@@ -4626,6 +4628,17 @@
 			}
 		}
 
+		protected virtual void DrawStatusBarPanelBackground (Graphics dc, Rectangle area, StatusBarPanel panel)
+		{
+			if (panel.BorderStyle != StatusBarPanelBorderStyle.None) {
+				Border3DStyle border_style = Border3DStyle.SunkenOuter;
+				if (panel.BorderStyle == StatusBarPanelBorderStyle.Raised)
+					border_style = Border3DStyle.RaisedInner;
+					
+				CPDrawBorder3D(dc, area, border_style, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom, panel.Parent.BackColor);
+			}
+		}
+
 		public override int StatusBarSizeGripWidth {
 			get { return 15; }
 		}
