Index: engines/mist/src/mist-style.c
===================================================================
--- engines/mist/src/mist-style.c	(revision 1024)
+++ engines/mist/src/mist-style.c	(working copy)
@@ -1090,9 +1110,11 @@
 		g_assert_not_reached ();
 	}
 	
+	/* Why is this here? Does it break stuff?
 	gtk_style_apply_default_background (style, window, FALSE,
 					    state_type, area,
 					    x, y, width, height);
+    */
 
 	light = &mist_style->color_cube.light[state_type];
 	dark = &mist_style->color_cube.dark[state_type];
@@ -1362,6 +1389,52 @@
   ge_gtk_style_to_cairo_color_cube (style, &mist_style->color_cube);
 }
 
+static void 
+mist_style_draw_flat_box (GtkStyle      *style,
+                           GdkWindow     *window,
+                           GtkStateType   state_type,
+                           GtkShadowType  shadow_type,
+                           GdkRectangle  *area,
+                           GtkWidget     *widget,
+                           const gchar   *detail,
+                           gint           x,
+                           gint           y,
+                           gint           width,
+                           gint           height)
+{
+    MistStyle * mist_style = MIST_STYLE (style);
+    
+    if (detail && !strcmp(detail, "base"))
+    {
+		GdkGC * gc = gdk_gc_new(window);
+		GdkColor trans = {0, 0, 0, 0};
+		CairoColor * bg = &mist_style->color_cube.bg[GTK_STATE_NORMAL];
+		cairo_t * cr = ge_gdk_drawable_to_cairo (window, area);
+		
+        /* Clear the window */
+		gdk_gc_set_foreground(gc, &trans);
+		if (area)
+			gdk_gc_set_clip_rectangle (gc, area);
+		gdk_draw_rectangle(window, gc, TRUE, x, y, width, height);
+		
+		/* Draw the translucent background */
+		if (width == -1 && height == -1)
+		    gdk_drawable_get_size(window, &width, &height);
+		else if (width == -1)
+		    gdk_drawable_get_size(window, &width, NULL);
+		else if (height == -1)
+		    gdk_drawable_get_size(window, NULL, &height);
+		cairo_set_source_rgba(cr, bg->r, bg->g, bg->b, 0.9);
+		cairo_rectangle(cr, x, y, width, height);
+		cairo_fill(cr);
+		cairo_destroy(cr);
+    }
+    else
+        mist_parent_style_class->draw_flat_box (
+            style, window, state_type, shadow_type, area, widget, detail, x, y, width, height
+        );
+}
+
 static void
 mist_style_class_init (MistStyleClass *klass)
 {
@@ -1377,6 +1450,7 @@
 	style_class->draw_polygon = mist_style_draw_polygon;
 	style_class->draw_diamond = mist_style_draw_diamond;
 	style_class->draw_box = mist_style_draw_box;
+	style_class->draw_flat_box = mist_style_draw_flat_box;
 	style_class->draw_tab = mist_style_draw_box;
 	style_class->draw_check = mist_style_draw_check;
 	style_class->draw_option = mist_style_draw_option;

