diff --git a/gnome-session/gsm-inhibit-dialog.c b/gnome-session/gsm-inhibit-dialog.c
index 3f529e7..b0741dc 100644
--- a/gnome-session/gsm-inhibit-dialog.c
+++ b/gnome-session/gsm-inhibit-dialog.c
@@ -68,9 +68,6 @@ struct GsmInhibitDialogPrivate
         GsmStore          *inhibitors;
         GsmStore          *clients;
         GtkListStore      *list_store;
-        gboolean           have_xrender;
-        int                xrender_event_base;
-        int                xrender_error_base;
 };
 
 enum {
@@ -314,130 +311,6 @@ scale_pixbuf (GdkPixbuf *pixbuf,
         }
 }
 
-#ifdef HAVE_XRENDER
-
-/* adapted from metacity */
-static GdkColormap*
-get_cmap (GdkPixmap *pixmap)
-{
-        GdkColormap *cmap;
-
-        cmap = gdk_drawable_get_colormap (pixmap);
-        if (cmap) {
-                g_object_ref (G_OBJECT (cmap));
-        }
-
-        if (cmap == NULL) {
-                if (gdk_drawable_get_depth (pixmap) == 1) {
-                        g_debug ("Using NULL colormap for snapshotting bitmap\n");
-                        cmap = NULL;
-                } else {
-                        g_debug ("Using system cmap to snapshot pixmap\n");
-                        cmap = gdk_screen_get_system_colormap (gdk_drawable_get_screen (pixmap));
-
-                        g_object_ref (G_OBJECT (cmap));
-                }
-        }
-
-        /* Be sure we aren't going to blow up due to visual mismatch */
-        if (cmap &&
-            (gdk_visual_get_depth (gdk_colormap_get_visual (cmap)) !=
-             gdk_drawable_get_depth (pixmap))) {
-                cmap = NULL;
-                g_debug ("Switching back to NULL cmap because of depth mismatch\n");
-        }
-
-        return cmap;
-}
-
-static GdkPixbuf *
-pixbuf_get_from_pixmap (Pixmap xpixmap)
-{
-        GdkDrawable *drawable;
-        GdkPixbuf   *retval;
-        GdkColormap *cmap;
-        int          width;
-        int          height;
-
-        retval = NULL;
-        cmap = NULL;
-
-        g_debug ("GsmInhibitDialog: getting foreign pixmap for %u", (guint)xpixmap);
-        drawable = gdk_pixmap_foreign_new (xpixmap);
-        if (GDK_IS_PIXMAP (drawable)) {
-                cmap = get_cmap (drawable);
-                gdk_drawable_get_size (drawable,
-                                       &width,
-                                       &height);
-                g_debug ("GsmInhibitDialog: getting pixbuf w=%d h=%d", width, height);
-
-                retval = gdk_pixbuf_get_from_drawable (NULL,
-                                                       drawable,
-                                                       cmap,
-                                                       0, 0,
-                                                       0, 0,
-                                                       width, height);
-        }
-        if (cmap) {
-                g_object_unref (G_OBJECT (cmap));
-        }
-        if (drawable) {
-                g_object_unref (G_OBJECT (drawable));
-        }
-
-        return retval;
-}
-
-static Pixmap
-get_pixmap_for_window (Display *display,
-                       Window   window)
-{
-        XWindowAttributes        attr;
-        XRenderPictureAttributes pa;
-        Pixmap                   pixmap;
-        XRenderPictFormat       *format;
-        Picture                  src_picture;
-        Picture                  dst_picture;
-        gboolean                 has_alpha;
-        int                      x;
-        int                      y;
-        int                      width;
-        int                      height;
-
-        XGetWindowAttributes (display, window, &attr);
-
-        format = XRenderFindVisualFormat (display, attr.visual);
-        has_alpha = (format->type == PictTypeDirect && format->direct.alphaMask);
-        x = attr.x;
-        y = attr.y;
-        width = attr.width;
-        height = attr.height;
-
-        pa.subwindow_mode = IncludeInferiors; /* Don't clip child widgets */
-
-        src_picture = XRenderCreatePicture (display, window, format, CPSubwindowMode, &pa);
-
-        pixmap = XCreatePixmap (display,
-                                window,
-                                width, height,
-                                attr.depth);
-
-        dst_picture = XRenderCreatePicture (display, pixmap, format, 0, 0);
-        XRenderComposite (display,
-                          has_alpha ? PictOpOver : PictOpSrc,
-                          src_picture,
-                          None,
-                          dst_picture,
-                          0, 0, 0, 0,
-                          0, 0,
-                          width, height);
-
-
-        return pixmap;
-}
-
-#endif /* HAVE_COMPOSITE */
-
 static GdkPixbuf *
 get_pixbuf_for_window (GdkDisplay *gdkdisplay,
                        guint       xid,
@@ -445,31 +318,14 @@ get_pixbuf_for_window (GdkDisplay *gdkdisplay,
                        int         height)
 {
         GdkPixbuf *pixbuf = NULL;
-#ifdef HAVE_XRENDER
-        Display   *display;
-        Window     xwindow;
-        Pixmap     xpixmap;
-
-        display = GDK_DISPLAY_XDISPLAY (gdkdisplay);
-        xwindow = (Window) xid;
-
-        xpixmap = get_pixmap_for_window (display, xwindow);
-
-        if (xpixmap == None) {
-                g_debug ("GsmInhibitDialog: Unable to get window snapshot for %u", xid);
-                return NULL;
-        } else {
-                g_debug ("GsmInhibitDialog: Got xpixmap %u", (guint)xpixmap);
-        }
+        GdkWindow *window;
 
-        pixbuf = pixbuf_get_from_pixmap (xpixmap);
-
-        if (xpixmap != None) {
-                gdk_error_trap_push ();
-                XFreePixmap (display, xpixmap);
-                gdk_display_sync (gdkdisplay);
-                gdk_error_trap_pop ();
-        }
+        window = gdk_window_foreign_new_for_display (gdkdisplay, xid);
+        pixbuf = gdk_pixbuf_get_from_window (window,
+                                             0, 0,
+                                             gdk_window_get_width (window),
+                                             gdk_window_get_height (window));
+        g_object_unref (window);
 
         if (pixbuf != NULL) {
                 GdkPixbuf *scaled;
@@ -478,9 +334,7 @@ get_pixbuf_for_window (GdkDisplay *gdkdisplay,
                 g_object_unref (pixbuf);
                 pixbuf = scaled;
         }
-#else
-        g_debug ("GsmInhibitDialog: no support for getting window snapshot");
-#endif
+
         return pixbuf;
 }
 
@@ -521,7 +375,7 @@ add_inhibitor (GsmInhibitDialog *dialog,
 
         xid = gsm_inhibitor_peek_toplevel_xid (inhibitor);
         g_debug ("GsmInhibitDialog: inhibitor has XID %u", xid);
-        if (xid > 0 && dialog->priv->have_xrender) {
+        if (xid > 0) {
                 pixbuf = get_pixbuf_for_window (gdkdisplay, xid, DEFAULT_SNAPSHOT_SIZE, DEFAULT_SNAPSHOT_SIZE);
                 if (pixbuf == NULL) {
                         g_debug ("GsmInhibitDialog: unable to read pixbuf from %u", xid);
@@ -991,32 +845,11 @@ gsm_inhibit_dialog_constructor (GType                  type,
                                 GObjectConstructParam *construct_properties)
 {
         GsmInhibitDialog *dialog;
-#ifdef HAVE_XRENDER
-        GdkDisplay *gdkdisplay;
-#endif /* HAVE_XRENDER */
 
         dialog = GSM_INHIBIT_DIALOG (G_OBJECT_CLASS (gsm_inhibit_dialog_parent_class)->constructor (type,
                                                                                                                   n_construct_properties,
                                                                                                                   construct_properties));
 
-#ifdef HAVE_XRENDER
-        gdkdisplay = gdk_display_get_default ();
-
-        gdk_error_trap_push ();
-        if (XRenderQueryExtension (GDK_DISPLAY_XDISPLAY (gdkdisplay), &dialog->priv->xrender_event_base, &dialog->priv->xrender_error_base)) {
-                g_debug ("GsmInhibitDialog: Initialized XRender extension");
-                dialog->priv->have_xrender = TRUE;
-        } else {
-                g_debug ("GsmInhibitDialog: Unable to initialize XRender extension");
-                dialog->priv->have_xrender = FALSE;
-        }
-        gdk_display_sync (gdkdisplay);
-        gdk_error_trap_pop ();
-#endif /* HAVE_XRENDER */
-
-        /* FIXME: turn this on when it is ready */
-        dialog->priv->have_xrender = FALSE;
-
         setup_dialog (dialog);
 
         gtk_widget_show_all (GTK_WIDGET (dialog));
