diff -Nur wbar-1.3.3/Bar.cc wbar-1.3.3-new/Bar.cc
--- wbar-1.3.3/Bar.cc	2007-09-26 19:24:52.000000000 +0300
+++ wbar-1.3.3-new/Bar.cc	2010-02-27 21:18:09.000000000 +0200
@@ -7,6 +7,7 @@
 #define MARGEN 4
 
 using namespace std;
+extern Pixmap rootmap;
 
 /* Bar Constructor & Destructor *//*{{{*/
 Bar::Bar(XWin *win, string barImg, int iSize, int iDist, float zFactor, 
@@ -167,7 +168,10 @@
     buffer = CREATE_IMAGE(t_w, t_h);
 
     /* Get background Image */
-    USE_DRAWABLE(DefaultRootWindow(window->display));
+    if (rootmap==None)
+	USE_DRAWABLE(DefaultRootWindow(window->display));
+    else
+	USE_DRAWABLE(rootmap);
     barback = IMAGE_FROM_DRAWABLE(window->x, window->y, t_w, t_h);
     USE_DRAWABLE(window->window);
 }
diff -Nur wbar-1.3.3/Main.cc wbar-1.3.3-new/Main.cc
--- wbar-1.3.3/Main.cc	2007-08-06 15:28:11.000000000 +0300
+++ wbar-1.3.3-new/Main.cc	2010-02-27 21:18:34.000000000 +0200
@@ -16,6 +16,7 @@
 using namespace std;
 
 void corpshandler(int);
+Pixmap rootmap=None;
 
 int main(int argc, char **argv) try{
 
@@ -161,6 +162,9 @@
 
     icload.closeConf();
 
+    rootmap=GetRootPixmap(barwin.getDisplay());
+//    if (rootmap!=None) ERRMSG("We have a pixmap!");
+
     /* Show the Bar *//*{{{*/
 
     if( optparser.isset("above-desk") ){
diff -Nur wbar-1.3.3/XWin.cc wbar-1.3.3-new/XWin.cc
--- wbar-1.3.3/XWin.cc	2007-01-26 21:15:59.000000000 +0200
+++ wbar-1.3.3-new/XWin.cc	2010-02-27 21:20:30.000000000 +0200
@@ -174,3 +174,42 @@
 	XChangeProperty(display, window, a, XA_ATOM, 32, PropModeAppend, (unsigned char *) &prop, 1);
     }
 }
+
+Pixmap GetRootPixmap (Display *display) {
+	Pixmap currentRootPixmap = None;
+	Atom act_type;
+	Atom _XROOTPMAP_ID = XInternAtom(display, "_XROOTPMAP_ID", False);
+	Atom _XSETROOT_ID = XInternAtom(display, "_XSETROOT_ID", False);
+	int act_format;
+	unsigned long nitems, bytes_after;
+	unsigned char *prop = NULL;
+
+	if (XGetWindowProperty ( display,
+	DefaultRootWindow(display), _XROOTPMAP_ID, 0, 1,
+	False, XA_PIXMAP, &act_type, &act_format, &nitems, &bytes_after,
+        &prop) == Success)
+        {
+//        puts("GetProp succeeded");
+                if (prop)
+                {
+//                puts("prop exists");
+                currentRootPixmap = *((Pixmap *) prop);
+                XFree (prop);
+                }
+	}
+
+	if (currentRootPixmap==None && XGetWindowProperty ( display,
+	DefaultRootWindow(display), _XSETROOT_ID, 0, 1,
+	False, XA_PIXMAP, &act_type, &act_format, &nitems, &bytes_after,
+        &prop) == Success)
+        {
+//        puts("GetProp2 succeeded");
+                if (prop)
+                {
+//                puts("prop2 exists");
+                currentRootPixmap = *((Pixmap *) prop);
+                XFree (prop);
+                }
+	}
+	return currentRootPixmap;
+}
diff -Nur wbar-1.3.3/XWin.h wbar-1.3.3-new/XWin.h
--- wbar-1.3.3/XWin.h	2007-01-26 21:15:59.000000000 +0200
+++ wbar-1.3.3-new/XWin.h	2010-02-27 21:02:30.000000000 +0200
@@ -54,4 +54,6 @@
 	void bottomLayer();
 };
 
+Pixmap GetRootPixmap (Display *display);
+
 #endif /* _XWIN_H_ */
