diff -ru gtk+-2.2.1/gtk/gtkstyle.c gtk+-2.2.1.patch/gtk/gtkstyle.c --- gtk+-2.2.1/gtk/gtkstyle.c 2003-01-31 05:42:34.000000000 +0100 +++ gtk+-2.2.1.patch/gtk/gtkstyle.c 2003-02-07 19:16:04.000000000 +0100 @@ -1988,6 +1988,36 @@ } } +static void +set_pixbuf_alpha (GdkPixbuf *src) +{ + int width, wb; + int height; + int rowstride; + gboolean has_alpha; + guchar *pixels, *p; + int i, j; + + width = gdk_pixbuf_get_width (src); + height = gdk_pixbuf_get_height (src); + rowstride = gdk_pixbuf_get_rowstride (src); + has_alpha = gdk_pixbuf_get_has_alpha (src); + + if (has_alpha == FALSE) + return; + + pixels = gdk_pixbuf_get_pixels (src); + + wb = width << 2; + for (i = 0; i < height; i ++) + { + p = pixels + (i * rowstride); + + for (j = 0; j < wb; j += 4) + p[j + 3] = p[j + 3] >> 1; + } +} + static GdkPixbuf * gtk_default_render_icon (GtkStyle *style, const GtkIconSource *source, @@ -2054,8 +2084,8 @@ stated = gdk_pixbuf_copy (scaled); gdk_pixbuf_saturate_and_pixelate (scaled, stated, - 0.8, TRUE); - + 0.0, FALSE); + set_pixbuf_alpha (stated); g_object_unref (scaled); } else if (state == GTK_STATE_PRELIGHT)