diff -rub old/gtk+-2.6.0/gtk/gtkhsv.c new/gtk+-2.6.0/gtk/gtkhsv.c
--- old/gtk+-2.6.0/gtk/gtkhsv.c	2004-10-16 06:27:08.000000000 +0200
+++ new/gtk+-2.6.0/gtk/gtkhsv.c	2004-12-22 01:30:36.000000000 +0100
@@ -941,6 +941,7 @@
   GdkColor color;
   gint focus_width;
   gint focus_pad;
+  gchar *detail;
 
   gtk_widget_style_get (widget,
 			"focus-line-width", &focus_width,
@@ -1034,6 +1035,7 @@
 				buf,
 				width * 3,
 				x, y);
+  g_free (buf);
   
   /* Draw value marker */
   
@@ -1044,12 +1046,14 @@
   
   if (INTENSITY (r, g, b) > 0.5)
     {
+      detail = "colorwheel_light";
       color.red = 0x0000;
       color.green = 0x0000;
       color.blue = 0x0000;
     }
   else
     {
+      detail = "colorwheel_dark";
       color.red = 0xffff;
       color.green = 0xffff;
       color.blue = 0xffff;
@@ -1057,17 +1061,35 @@
 
   gdk_gc_set_rgb_fg_color (priv->gc, &color);
   
-  gdk_draw_line (drawable, priv->gc,
-		 -x + center, -y + center,
-		 -x + center + cos (priv->h * 2.0 * G_PI) * center,
-		 -y + center - sin (priv->h * 2.0 * G_PI) * center);
+#define OUTER_RADIUS 4
+#define INNER_RADIUS 3
+#define FOCUS_RADIUS 6
+  xx = -x + center + cos (priv->h * 2.0 * G_PI) * 0.5 * (outer + inner);
+  yy = -y + center - sin (priv->h * 2.0 * G_PI) * 0.5 * (outer + inner);
+  gdk_draw_arc (drawable, priv->gc, FALSE,
+		xx - OUTER_RADIUS, yy - OUTER_RADIUS,
+		OUTER_RADIUS * 2, OUTER_RADIUS * 2,
+		0, 360*64);
+  gdk_draw_arc (drawable, priv->gc, FALSE,
+		xx - INNER_RADIUS, yy - INNER_RADIUS,
+		INNER_RADIUS * 2, INNER_RADIUS * 2,
+		0, 360*64);
   
   gdk_gc_set_clip_mask (priv->gc, NULL);
   g_object_unref (mask);
   
-  g_free (buf);
-  
-  /* Draw ring outline */
+  /* Draw ring focus */
+  if (GTK_WIDGET_HAS_FOCUS (hsv) &&
+      priv->focus_on_ring)
+    {
+      gtk_paint_focus (widget->style, drawable,
+		       GTK_WIDGET_STATE (widget),
+		       NULL, widget, detail,
+		       xx - FOCUS_RADIUS - focus_width - focus_pad,
+		       yy - FOCUS_RADIUS - focus_width - focus_pad,
+		       2 * (FOCUS_RADIUS + focus_width + focus_pad),
+		       2 * (FOCUS_RADIUS + focus_width + focus_pad));
+    }
 }
 
 /* Converts an HSV triplet to an integer RGB triplet */
@@ -1295,10 +1317,6 @@
 
   gdk_gc_set_rgb_fg_color (priv->gc, &color);
 
-#define OUTER_RADIUS 4
-#define INNER_RADIUS 3 
-#define FOCUS_RADIUS 6
-  
   gdk_draw_arc (drawable, priv->gc, FALSE,
 		xx - OUTER_RADIUS, yy - OUTER_RADIUS,
 		OUTER_RADIUS * 2, OUTER_RADIUS * 2,
@@ -1329,7 +1347,6 @@
 		       2 * (FOCUS_RADIUS + focus_width + focus_pad), 
 		       2 * (FOCUS_RADIUS + focus_width + focus_pad));
     }
-  
 }
 
 /* Paints the contents of the HSV color selector */
@@ -1392,15 +1409,6 @@
 		     dest.y,
 		     event->area.width, event->area.height);
   
-  if (GTK_WIDGET_HAS_FOCUS (hsv) && priv->focus_on_ring)
-    gtk_paint_focus (widget->style, widget->window,
-		     GTK_WIDGET_STATE (widget),
-		     &event->area, widget, NULL,
-		     widget->allocation.x,
-		     widget->allocation.y, 
-		     widget->allocation.width, 
-		     widget->allocation.height);
-
   g_object_unref (pixmap);
   
   return FALSE;
