Index: /applications/editors/josm/plugins/wmsplugin/webkit-image-gtk.c
===================================================================
--- /applications/editors/josm/plugins/wmsplugin/webkit-image-gtk.c	(revision 21400)
+++ /applications/editors/josm/plugins/wmsplugin/webkit-image-gtk.c	(revision 21401)
@@ -1,6 +1,7 @@
 /* There is no licence for this, I don't care what you do with it */
-#include <stdio.h>
 #include <stdlib.h>
+#include <unistd.h>
 
+#include <gio/gunixoutputstream.h>
 #include <webkit/webkit.h>
 
@@ -8,29 +9,27 @@
 
 /* compile with:
-gcc -o webkit-image-gtk webkit-image-gtk.c `pkg-config --cflags --libs webkit-1.0`
-*/
+ * gcc -o webkit-image-gtk webkit-image-gtk.c `pkg-config --cflags --libs webkit-1.0 gio-unix-2.0`
+ * Requires GTK+ 2.20 and WebKitGtk+ 1.1.1
+ */
 
 static void
-on_finished (WebKitWebView *view, WebKitWebFrame *frame)
+on_finished (WebKitWebView      *view,
+             WebKitWebFrame     *frame,
+             GtkOffscreenWindow *window)
 {
-	GdkPixmap *pixmap;
-	GdkColormap *cmap;
 	GdkPixbuf *pixbuf;
-	gchar *buffer;
-	gsize size;
+	GOutputStream *stream;
 
-	pixmap = gtk_widget_get_snapshot (GTK_WIDGET (view), NULL);
-	cmap = gdk_colormap_get_system ();
-	pixbuf = gdk_pixbuf_get_from_drawable (NULL, GDK_DRAWABLE (pixmap), cmap,
-					       0, 0, 0, 0, WIDTH, WIDTH);
+	pixbuf = gtk_offscreen_window_get_pixbuf (window);
 
-	gdk_pixbuf_save_to_buffer (pixbuf, &buffer, &size, "png", NULL, NULL);
-
-	fwrite (buffer, 1, size, stdout);
+	stream = g_unix_output_stream_new (STDOUT_FILENO, TRUE);
+	gdk_pixbuf_save_to_stream (pixbuf, stream, "png", NULL, NULL, NULL);
 
 	exit (1);
 }
 
-int main (int argc, char **argv)
+int
+main (int    argc,
+      char **argv)
 {
 	GtkWidget *window;
@@ -42,14 +41,8 @@
 	gtk_init (&argc, &argv);
 
-	window = gtk_window_new (GTK_WINDOW_POPUP);
-
-	/* Check if compositing window manager is running, needs one for now */
-	if (gtk_widget_is_composited (window))
-		gtk_window_set_opacity (GTK_WINDOW (window), 0.0);
-	else
-		g_error ("This requires a compositing window manager for now");
+	window = gtk_offscreen_window_new ();
 
 	view = webkit_web_view_new ();
-	webkit_web_view_open (WEBKIT_WEB_VIEW (view), argv[1]);
+	webkit_web_view_load_uri (WEBKIT_WEB_VIEW (view), argv[1]);
 	gtk_widget_set_size_request (view, WIDTH, WIDTH);
 	gtk_container_add (GTK_CONTAINER (window), view);
@@ -57,6 +50,6 @@
 	gtk_widget_show_all (window);
 
-	g_signal_connect (G_OBJECT (view), "load-finished",
-			  G_CALLBACK (on_finished), NULL);
+	g_signal_connect (view, "load-finished",
+	                  G_CALLBACK (on_finished), window);
 
 	gtk_main ();
