Index: class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs	(revision 102508)
+++ class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs	(working copy)
@@ -955,6 +955,10 @@
 		public abstract int TrackBarValueFromMousePosition (int x, int y, TrackBar tb);
 		#endregion	// TrackBar
 
+		#region UpDownBase
+		public abstract void UpDownBaseDrawButton (Graphics g, Rectangle bounds, bool top, bool pressed);
+		#endregion
+
 		#region VScrollBar
 		public abstract Size VScrollBarDefaultSize{get;}	// Default size of the scrollbar
 		#endregion	// VScrollBar
Index: class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(revision 102508)
+++ class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(working copy)
@@ -5644,6 +5644,13 @@
 
 		#endregion	// TrackBar
 
+		#region UpDownBase
+		public override void UpDownBaseDrawButton (Graphics g, Rectangle bounds, bool top, bool pressed)
+		{
+			ControlPaint.DrawScrollButton (g, bounds, top ? ScrollButton.Up : ScrollButton.Down, pressed ? ButtonState.Pushed : ButtonState.Normal);
+		}
+		#endregion
+
 		#region	VScrollBar
 		public override Size VScrollBarDefaultSize {
 			get {
Index: class/Managed.Windows.Forms/System.Windows.Forms/UpDownBase.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/UpDownBase.cs	(revision 102508)
+++ class/Managed.Windows.Forms/System.Windows.Forms/UpDownBase.cs	(working copy)
@@ -96,23 +96,19 @@
 
 			private void redraw (Graphics graphics)
 			{
-				ButtonState top_button_state;
-				ButtonState bottom_button_state;
+				bool top_button_pressed = false;
+				bool bottom_button_pressed = false;
 
-				top_button_state = bottom_button_state = ButtonState.Normal;
 
 				if (mouse_pressed != 0) {
-					if ((mouse_pressed == 1) && top_button_rect.Contains(mouse_x, mouse_y)) {
-						top_button_state = ButtonState.Pushed;
-					}
+					if (mouse_pressed == 1 && top_button_rect.Contains(mouse_x, mouse_y))
+						top_button_pressed = true;
 
-					if ((mouse_pressed == 2) && bottom_button_rect.Contains(mouse_x, mouse_y)) {
-						bottom_button_state = ButtonState.Pushed;
-					}
+					if (mouse_pressed == 2 && bottom_button_rect.Contains(mouse_x, mouse_y))
+						bottom_button_pressed = true;
 				}
-
-				ControlPaint.DrawScrollButton(graphics, top_button_rect, ScrollButton.Up, top_button_state);
-				ControlPaint.DrawScrollButton(graphics, bottom_button_rect, ScrollButton.Down, bottom_button_state);
+				ThemeEngine.Current.UpDownBaseDrawButton (graphics, top_button_rect, true, top_button_pressed);
+				ThemeEngine.Current.UpDownBaseDrawButton (graphics, bottom_button_rect, false, bottom_button_pressed);
 			}
 
 			private void tmrRepeat_Tick (object sender, EventArgs e)
