From 1a9809baab5d8adf6ccf165e8f5d294b498c2fd5 Mon Sep 17 00:00:00 2001 From: Jeff Muizelaar Date: Mon, 21 Jul 2008 22:24:42 -0400 Subject: [PATCH] Fix scaling with a device offset Apply the device offset transformation to the pattern before the ctm one. Fixes bug #16469. --- src/cairo-gstate.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c index 0eb6e7d28..b9d59d3da 100644 --- a/src/cairo-gstate.c +++ b/src/cairo-gstate.c @@ -795,8 +795,7 @@ _cairo_gstate_copy_transformed_pattern (cairo_gstate_t *gstate, if (status) return status; - _cairo_pattern_transform (pattern, ctm_inverse); - + /* apply device_transform first so that it is transformed by ctm_inverse */ if (cairo_pattern_get_type (original) == CAIRO_PATTERN_TYPE_SURFACE) { surface_pattern = (cairo_surface_pattern_t *) original; surface = surface_pattern->surface; @@ -804,6 +803,8 @@ _cairo_gstate_copy_transformed_pattern (cairo_gstate_t *gstate, _cairo_pattern_transform (pattern, &surface->device_transform); } + _cairo_pattern_transform (pattern, ctm_inverse); + return CAIRO_STATUS_SUCCESS; }