summaryrefslogtreecommitdiff
blob: 2bb2f7c2ecf9a433b76905384838b1c18035c986 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
--- a/rsvg-convert.c	
+++ a/rsvg-convert.c	
@@ -137,7 +137,7 @@ main (int argc, char **argv)
     cairo_surface_t *surface = NULL;
     cairo_t *cr = NULL;
     RsvgHandleFlags flags = RSVG_HANDLE_FLAGS_NONE;
-    RsvgDimensionData dimensions;
+    RsvgDimensionData dimensions, dimensions_orig;
     FILE *output_file = stdout;
     char *export_lookup_id;
 
@@ -318,6 +318,7 @@ main (int argc, char **argv)
 
             if (!rsvg_handle_get_dimensions_sub (rsvg, &dimensions, export_lookup_id))
                 g_printerr ("Could not get dimensions for file %s\n", args[i]);
+            rsvg_handle_get_dimensions_sub (rsvg, &dimensions_orig, export_lookup_id);
 
             /* if both are unspecified, assume user wants to zoom the image in at least 1 dimension */
             if (width == -1 && height == -1) {
@@ -416,6 +417,9 @@ main (int argc, char **argv)
             cairo_translate (cr, -pos.x, -pos.y);
         }
 
+        cairo_scale(cr, (double) dimensions.width / dimensions_orig.width,
+                (double) dimensions.height /dimensions_orig.height);
+
         rsvg_handle_render_cairo_sub (rsvg, cr, export_lookup_id);
 
         g_free (export_lookup_id);