Index: class/Managed.Windows.Forms/System.Windows.Forms.VisualStyles/VisualStyleElement.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms.VisualStyles/VisualStyleElement.cs	(revision 105189)
+++ class/Managed.Windows.Forms/System.Windows.Forms.VisualStyles/VisualStyleElement.cs	(working copy)
@@ -37,7 +37,20 @@
 		#region Class name/part/state constants
 		private const string BUTTON = "BUTTON";
 		private const string CLOCK = "CLOCK";
+		#region COMBOXBOX
 		private const string COMBOBOX = "COMBOBOX";
+		enum COMBOBOXPARTS
+		{
+			CP_BORDER = 4
+		}
+		enum BORDERSTATES
+		{
+			CBB_NORMAL = 1,
+			CBB_HOT,
+			CBB_FOCUSED,
+			CBB_DISABLED
+		}
+		#endregion
 		private const string EDIT = "EDIT";
 		private const string EXPLORERBAR = "EXPLORERBAR";
 		private const string HEADER = "HEADER";
@@ -161,6 +174,41 @@
 				public static VisualStyleElement Normal { get { return VisualStyleElement.CreateElement (VisualStyleElement.COMBOBOX, 1, 1); } }
 				public static VisualStyleElement Pressed { get { return VisualStyleElement.CreateElement (VisualStyleElement.COMBOBOX, 1, 3); } }
 			}
+			internal static class Border
+			{
+				public static VisualStyleElement Normal {
+					get {
+						return new VisualStyleElement (
+							COMBOBOX,
+							(int)COMBOBOXPARTS.CP_BORDER,
+							(int)BORDERSTATES.CBB_NORMAL);
+					}
+				}
+				public static VisualStyleElement Hot {
+					get {
+						return new VisualStyleElement (
+							COMBOBOX,
+							(int)COMBOBOXPARTS.CP_BORDER,
+							(int)BORDERSTATES.CBB_HOT);
+					}
+				}
+				public static VisualStyleElement Focused {
+					get {
+						return new VisualStyleElement (
+							COMBOBOX,
+							(int)COMBOBOXPARTS.CP_BORDER,
+							(int)BORDERSTATES.CBB_FOCUSED);
+					}
+				}
+				public static VisualStyleElement Disabled {
+					get {
+						return new VisualStyleElement (
+							COMBOBOX,
+							(int)COMBOBOXPARTS.CP_BORDER,
+							(int)BORDERSTATES.CBB_DISABLED);
+					}
+				}
+			}
 		}
 		#endregion
 		#region ExplorerBar
Index: class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs	(revision 105189)
+++ class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs	(working copy)
@@ -112,6 +112,7 @@
 			MouseUp += new MouseEventHandler (OnMouseUpCB);
 			MouseMove += new MouseEventHandler (OnMouseMoveCB);
 			MouseWheel += new MouseEventHandler (OnMouseWheelCB);
+			MouseEnter += new EventHandler (OnMouseEnter);
 			MouseLeave += new EventHandler (OnMouseLeave);
 			KeyDown +=new KeyEventHandler(OnKeyDownCB);
 		}
@@ -792,6 +793,16 @@
 
 		#endregion Public Properties
 
+		#region Internal Properties
+		internal Rectangle ButtonArea {
+			get { return button_area; }
+		}
+
+		internal Rectangle TextArea {
+			get { return text_area; }
+		}
+		#endregion
+
 		#region Public Methods
 #if NET_2_0
 		[Obsolete ("This method has been deprecated")]
@@ -1428,22 +1439,8 @@
 			is_flat = style == FlatStyle.Flat || style == FlatStyle.Popup;
 #endif
 
-			if (!Enabled)
-				dc.FillRectangle (theme.ResPool.GetSolidBrush (theme.ColorControl), bounds);
+			theme.ComboBoxDrawBackground (this, dc, clip, style);
 
-			if (DropDownStyle == ComboBoxStyle.Simple)
-				dc.FillRectangle (theme.ResPool.GetSolidBrush (Parent.BackColor), ClientRectangle);
-
-			if (style == FlatStyle.Popup && (is_entered || Focused)) {
-				Rectangle area = text_area;
-				area.Height -= 1;
-				area.Width -= 1;
-				dc.DrawRectangle (theme.ResPool.GetPen (SystemColors.ControlDark), area);
-				dc.DrawLine (theme.ResPool.GetPen (SystemColors.ControlDark), button_area.X - 1, button_area.Top, button_area.X - 1, button_area.Bottom);
-			}
-			if (!is_flat && clip.IntersectsWith (text_area))
-				ControlPaint.DrawBorder3D (dc, text_area, Border3DStyle.Sunken);
-
 			int border = theme.Border3DSize.Width;
 
 			// No edit control, we paint the edit ourselves
@@ -1718,10 +1715,21 @@
 			Capture = true;
 		}
 
+		void OnMouseEnter (object sender, EventArgs e)
+		{
+			if (ThemeEngine.Current.CombBoxBackgroundHasHotElementStyle (this))
+				Invalidate ();
+		}
+
 		void OnMouseLeave (object sender, EventArgs e)
 		{
-			if (show_dropdown_button)
-				DropDownButtonEntered = false;
+			if (ThemeEngine.Current.CombBoxBackgroundHasHotElementStyle (this)) {
+				drop_down_button_entered = false;
+				Invalidate ();
+			} else {
+				if (show_dropdown_button)
+					DropDownButtonEntered = false;
+			}
 		}
 
 		void OnMouseMoveCB (object sender, MouseEventArgs e)
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)
@@ -745,6 +745,8 @@
 		public abstract void ComboBoxDrawNormalDropDownButton (ComboBox comboBox, Graphics g, Rectangle clippingArea, Rectangle area, ButtonState state);
 		public abstract bool ComboBoxNormalDropDownButtonHasTransparentBackground (ComboBox comboBox, ButtonState state);
 		public abstract bool ComboBoxDropDownButtonHasHotElementStyle (ComboBox comboBox);
+		public abstract void ComboBoxDrawBackground (ComboBox comboBox, Graphics g, Rectangle clippingArea, FlatStyle style);
+		public abstract bool CombBoxBackgroundHasHotElementStyle (ComboBox comboBox);
 		#endregion	// ComboBox
 
 		#region Control
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)
@@ -1596,6 +1596,29 @@
 		{
 			return false;
 		}
+		public override void ComboBoxDrawBackground (ComboBox comboBox, Graphics g, Rectangle clippingArea, FlatStyle style)
+		{
+			if (!comboBox.Enabled)
+				g.FillRectangle (ResPool.GetSolidBrush (ColorControl), comboBox.Bounds);
+
+			if (comboBox.DropDownStyle == ComboBoxStyle.Simple)
+				g.FillRectangle (ResPool.GetSolidBrush (comboBox.Parent.BackColor), comboBox.ClientRectangle);
+
+			if (style == FlatStyle.Popup && (comboBox.Entered || comboBox.Focused)) {
+				Rectangle area = comboBox.TextArea;
+				area.Height -= 1;
+				area.Width -= 1;
+				g.DrawRectangle (ResPool.GetPen (SystemColors.ControlDark), area);
+				g.DrawLine (ResPool.GetPen (SystemColors.ControlDark), comboBox.ButtonArea.X - 1, comboBox.ButtonArea.Top, comboBox.ButtonArea.X - 1, comboBox.ButtonArea.Bottom);
+			}
+			bool is_flat = style == FlatStyle.Flat || style == FlatStyle.Popup;
+			if (!is_flat && clippingArea.IntersectsWith (comboBox.TextArea))
+				ControlPaint.DrawBorder3D (g, comboBox.TextArea, Border3DStyle.Sunken);
+		}
+		public override bool CombBoxBackgroundHasHotElementStyle (ComboBox comboBox)
+		{
+			return false;
+		}
 		#endregion ComboBox
 		
 		#region Datagrid
