-    gs_cairo->cairo_save(m_cairo);
-    // In case we're scaling the image by using a width and height different
-    // than the bitmap's size create a pattern transformation on the surface and
-    // draw the transformed pattern.
-    cairo_pattern_t* pattern = gs_cairo->cairo_pattern_create_for_surface(surface);
-
-    // Prepare to draw the image.
-    gs_cairo->cairo_translate(m_cairo, x, y);
-    gs_cairo->cairo_set_source(m_cairo, pattern);
-    // Use the original size here since the context is scaled already.
-    gs_cairo->cairo_rectangle(m_cairo, 0, 0, bw, bh);
-    // Fill the rectangle using the pattern.
-    gs_cairo->cairo_fill(m_cairo);
-
-    // Clean up.
-    gs_cairo->cairo_pattern_destroy(pattern);
-    gs_cairo->cairo_surface_destroy(surface);
-    delete [] buffer;
-
-    CalcBoundingBox(0,0);
-    CalcBoundingBox(bw,bh);
-
-    gs_cairo->cairo_restore(m_cairo);
-}
-
-// wxGtkPrintDC has a constant resolution of 72dpi. If we want an higher resolution for printing
-// an image, the scaling has to be done by cairo.
-void wxGtkPrintDC::DoDrawScaledBitmap( const wxBitmap& bitmap, wxCoord x, wxCoord y, wxCoord w, wxCoord h, bool useMask, int quality )
-{
-    wxCHECK_RET( bitmap.IsOk(), wxT("Invalid bitmap in wxGtkPrintDC::DoDrawBitmap"));
-
-    cairo_surface_t* surface;
-    int bw = bitmap.GetWidth();
-    int bh = bitmap.GetHeight();
-    x = LogicalToDeviceX(x);
-    y = LogicalToDeviceY(y);
-    w = LogicalToDeviceXRel(w);
-    h = LogicalToDeviceYRel(h);
-    wxBitmap bmpSource = bitmap;  // we need a non-const instance.
-    unsigned char* buffer = new unsigned char[bw*bh*4];
-    wxUint32* data = (wxUint32*)buffer;
-
-    // Create a surface object and copy the bitmap pixel data to it. If the image has alpha (or a mask represented as alpha)
-    // then we'll use a different format and iterator than if it doesn't.
-    if (bmpSource.HasAlpha() || bmpSource.GetMask())
-    {
-        surface = gs_cairo->cairo_image_surface_create_for_data(
-            buffer, CAIRO_FORMAT_ARGB32, bw, bh, bw*4);
-        wxAlphaPixelData pixData(bmpSource, wxPoint(0,0), wxSize(bw, bh));
-        wxCHECK_RET( pixData, wxT("Failed to gain raw access to bitmap data."));
-
-        wxAlphaPixelData::Iterator p(pixData);
-        int y, x;
-        for (y=0; y<bh; y++)
-        {
-            wxAlphaPixelData::Iterator rowStart = p;
-            for (x=0; x<bw; x++)
-            {
-                // Each pixel in CAIRO_FORMAT_ARGB32 is a 32-bit quantity,
-                // with alpha in the upper 8 bits, then red, then green, then
-                // blue. The 32-bit quantities are stored native-endian.
-                // Pre-multiplied alpha is used.
-                unsigned char alpha = p.Alpha();