diff -Nur eel2-2.19.2/eel/eel-background.c eel2-2.19.2.new/eel/eel-background.c
--- eel2-2.19.2/eel/eel-background.c	2007-04-03 06:06:05.000000000 -0400
+++ eel2-2.19.2.new/eel/eel-background.c	2007-06-05 08:21:06.000000000 -0400
@@ -50,6 +50,8 @@
 #include <X11/Xatom.h>
 #include <gdk/gdkx.h>
 
+static GdkAtom compizAtom = 0;
+
 
 /* FIXME: This could really be eliminated now */
 typedef struct {
@@ -161,6 +163,9 @@
 	gulong screen_size_handler;
 	/* Can we use common pixmap for root window and desktop window */
 	gboolean use_common_pixmap;
+	/* Should we draw the desktop background transparent (to enable drawing
+	   by the composite manager */
+	gboolean transparent_desktop;
 };
 
 static void
@@ -986,9 +991,11 @@
 		
 		gc = gdk_gc_new (pixmap);
 		eel_background_pre_draw (background,  entire_width, entire_height);
-		eel_background_draw (background, pixmap, gc,
-				     0, 0, 0, 0,
-				     pixmap_width, pixmap_height);
+		if (!(background->details->is_desktop &&
+				background->details->transparent_desktop))
+				eel_background_draw (background, pixmap, gc,
+						     0, 0, 0, 0,
+						     pixmap_width, pixmap_height);
 		g_object_unref (gc);
 		background->details->background_pixmap = pixmap;
 		changed = TRUE;
@@ -1901,11 +1908,55 @@
 	background->details->use_common_pixmap = FALSE;
 }
 
+static GdkFilterReturn
+compizSupportedFilterFunc (GdkXEvent * xevent,
+			   GdkEvent * event,
+			   gpointer data)
+{
+     XEvent * e = (XEvent *) xevent;
+     GtkWidget * widget = (GtkWidget *) data;
+          
+     if (e->type == PropertyNotify){
+		     
+     
+	  if (e->xproperty.atom == gdk_x11_atom_to_xatom(compizAtom)){
+	       EelBackground * b = eel_get_widget_background(widget);
+		  if (e->xproperty.state == PropertyDelete){
+		       b->details->transparent_desktop = 0;
+
+		  } else {
+		       b->details->transparent_desktop = 1;
+		  }		       
+		  eel_widget_background_changed(widget, b);		  
+	  }
+     }
+     
+     return GDK_FILTER_CONTINUE;
+}
+
+
 void
 eel_background_set_desktop (EelBackground *background, GtkWidget *widget, gboolean is_desktop)
 {
 	background->details->is_desktop = is_desktop;
 
+
+	if (is_desktop){
+	     GdkScreen * screen = gtk_widget_get_screen(widget);
+	     GdkWindow * root = gdk_screen_get_root_window(screen);
+	     if (!compizAtom)
+		  compizAtom = gdk_atom_intern("_COMPIZ_WALLPAPER_SUPPORTED", 0);	
+	     
+	     gboolean compizSupported = 
+		  gdk_property_get(root, compizAtom, GDK_NONE, 0, 8, FALSE,
+				   0, 0, 0, 0);
+	     background->details->transparent_desktop = compizSupported;
+	     
+	     gdk_window_add_filter(root, compizSupportedFilterFunc, widget);
+	}	
+
+	
+
 	if (GTK_WIDGET_REALIZED(widget) && background->details->is_desktop) {
 		widget_realized_setup (widget, background);
 	}
