Index: class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs	(revision 102342)
+++ class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs	(working copy)
@@ -961,6 +961,7 @@
 
 		#region TreeView
 		public abstract Size TreeViewDefaultSize { get; }
+		public abstract void TreeViewDrawNodePlusMinus (TreeView treeView, TreeNode node, Graphics dc, int x, int middle);
 		#endregion
 
 		public virtual void DrawManagedWindowDecorations (Graphics dc, Rectangle clip, InternalWindowManager wm)
Index: class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(revision 102342)
+++ class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs	(working copy)
@@ -5640,6 +5640,20 @@
 			}
 		}
 
+		public override void TreeViewDrawNodePlusMinus (TreeView treeView, TreeNode node, Graphics dc, int x, int middle)
+		{
+			int height = treeView.ActualItemHeight - 2;
+			dc.FillRectangle (ResPool.GetSolidBrush (treeView.BackColor), (x + 4) - (height / 2), node.GetY() + 1, height, height);
+			
+			dc.DrawRectangle (SystemPens.ControlDarkDark, x, middle - 4, 8, 8);
+
+			if (node.IsExpanded) {
+				dc.DrawLine (SystemPens.ControlDarkDark, x + 2, middle, x + 6, middle); 
+			} else {
+				dc.DrawLine (SystemPens.ControlDarkDark, x + 2, middle, x + 6, middle);
+				dc.DrawLine (SystemPens.ControlDarkDark, x + 4, middle - 2, x + 4, middle + 2);
+			}
+		}
 		#endregion
 
 		public override int ManagedWindowTitleBarHeight (InternalWindowManager wm)
Index: class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
===================================================================
--- class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs	(revision 102342)
+++ class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs	(working copy)
@@ -1502,21 +1502,6 @@
 			}
 		}
 
-		private void DrawNodePlusMinus (TreeNode node, Graphics dc, int x, int middle)
-		{
-			int height = ActualItemHeight - 2;
-			dc.FillRectangle (ThemeEngine.Current.ResPool.GetSolidBrush (BackColor), (x + 4) - (height / 2), node.GetY() + 1, height, height);
-			
-			dc.DrawRectangle (SystemPens.ControlDarkDark, x, middle - 4, 8, 8);
-
-			if (node.IsExpanded) {
-				dc.DrawLine (SystemPens.ControlDarkDark, x + 2, middle, x + 6, middle); 
-			} else {
-				dc.DrawLine (SystemPens.ControlDarkDark, x + 2, middle, x + 6, middle);
-				dc.DrawLine (SystemPens.ControlDarkDark, x + 4, middle - 2, x + 4, middle + 2);
-			}
-		}
-
 #if NET_2_0
 		private void DrawNodeState (TreeNode node, Graphics dc, int x, int y)
 		{
@@ -1803,7 +1788,7 @@
 
 			if (draw_mode == TreeViewDrawMode.Normal || draw_mode == TreeViewDrawMode.OwnerDrawText) {
 				if ((show_root_lines || node.Parent != null) && show_plus_minus && child_count > 0)
-					DrawNodePlusMinus (node, dc, node.GetLinesX () - Indent + 5, middle);
+					ThemeEngine.Current.TreeViewDrawNodePlusMinus (this, node, dc, node.GetLinesX () - Indent + 5, middle);
 
 #if NET_2_0
 				if (checkboxes && state_image_list == null)
