1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/cairo/premultiply-alpha-solid-gradients.patch Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,46 @@ 1.4 +Fix single and multi-stop solid gradients by multiplying by the alpha component. r=roc 1.5 + 1.6 +This cairo commit that caused the problem: 2d790daa957471670f4ae0d3b22da89e4ee7111f. 1.7 +It was merged into mozilla-central with 1effb72d30cf 1.8 + 1.9 +diff --git a/gfx/cairo/cairo/src/cairo-pattern.c b/gfx/cairo/cairo/src/cairo-pattern.c 1.10 +--- a/gfx/cairo/cairo/src/cairo-pattern.c 1.11 ++++ b/gfx/cairo/cairo/src/cairo-pattern.c 1.12 +@@ -2262,8 +2262,17 @@ _cairo_pattern_acquire_surface (const ca 1.13 + 1.14 + if (src->n_stops) 1.15 + { 1.16 ++ cairo_color_t color; 1.17 ++ 1.18 ++ /* multiply by alpha */ 1.19 ++ _cairo_color_init_rgba (&color, 1.20 ++ src->stops->color.red, 1.21 ++ src->stops->color.green, 1.22 ++ src->stops->color.blue, 1.23 ++ src->stops->color.alpha); 1.24 ++ 1.25 + _cairo_pattern_init_solid (&solid, 1.26 +- &src->stops->color, 1.27 ++ &color, 1.28 + CAIRO_CONTENT_COLOR_ALPHA); 1.29 + } 1.30 + else 1.31 +@@ -2295,9 +2304,17 @@ _cairo_pattern_acquire_surface (const ca 1.32 + } 1.33 + if (i == src->n_stops) { 1.34 + cairo_solid_pattern_t solid; 1.35 ++ cairo_color_t color; 1.36 ++ 1.37 ++ /* multiply by alpha */ 1.38 ++ _cairo_color_init_rgba (&color, 1.39 ++ src->stops->color.red, 1.40 ++ src->stops->color.green, 1.41 ++ src->stops->color.blue, 1.42 ++ src->stops->color.alpha); 1.43 + 1.44 + _cairo_pattern_init_solid (&solid, 1.45 +- &src->stops->color, 1.46 ++ &color, 1.47 + CAIRO_CONTENT_COLOR_ALPHA); 1.48 + 1.49 + status =