Bug 392498 - GC.copyarea does not work correctly on linux
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java
index 6c45c0f..fb6d761 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/GC.java
@@ -452,6 +452,7 @@
 		int /*long*/ cairo = Cairo.cairo_create(image.surface);
 		if (cairo == 0) SWT.error(SWT.ERROR_NO_HANDLES);
 		Cairo.cairo_translate(cairo, -x, -y);
+		Cairo.cairo_push_group(cairo);
 		if (data.image != null) {
 			Cairo.cairo_set_source_surface(cairo, data.image.surface, 0, 0);
 		} else if (data.drawable != 0) {
@@ -468,10 +469,13 @@
 				Cairo.cairo_set_source_surface(cairo, srcSurface, 0, 0);
 			}
 		} else {
+			Cairo.cairo_destroy(cairo);
 			return;
 		}
 		Cairo.cairo_set_operator(cairo, Cairo.CAIRO_OPERATOR_SOURCE);
 		Cairo.cairo_paint(cairo);
+		Cairo.cairo_pop_group_to_source(cairo);
+		Cairo.cairo_paint(cairo);
 		Cairo.cairo_destroy(cairo);
         return;
 	}