michael@0: Fix single and multi-stop solid gradients by multiplying by the alpha component. r=roc michael@0: michael@0: This cairo commit that caused the problem: 2d790daa957471670f4ae0d3b22da89e4ee7111f. michael@0: It was merged into mozilla-central with 1effb72d30cf michael@0: michael@0: diff --git a/gfx/cairo/cairo/src/cairo-pattern.c b/gfx/cairo/cairo/src/cairo-pattern.c michael@0: --- a/gfx/cairo/cairo/src/cairo-pattern.c michael@0: +++ b/gfx/cairo/cairo/src/cairo-pattern.c michael@0: @@ -2262,8 +2262,17 @@ _cairo_pattern_acquire_surface (const ca michael@0: michael@0: if (src->n_stops) michael@0: { michael@0: + cairo_color_t color; michael@0: + michael@0: + /* multiply by alpha */ michael@0: + _cairo_color_init_rgba (&color, michael@0: + src->stops->color.red, michael@0: + src->stops->color.green, michael@0: + src->stops->color.blue, michael@0: + src->stops->color.alpha); michael@0: + michael@0: _cairo_pattern_init_solid (&solid, michael@0: - &src->stops->color, michael@0: + &color, michael@0: CAIRO_CONTENT_COLOR_ALPHA); michael@0: } michael@0: else michael@0: @@ -2295,9 +2304,17 @@ _cairo_pattern_acquire_surface (const ca michael@0: } michael@0: if (i == src->n_stops) { michael@0: cairo_solid_pattern_t solid; michael@0: + cairo_color_t color; michael@0: + michael@0: + /* multiply by alpha */ michael@0: + _cairo_color_init_rgba (&color, michael@0: + src->stops->color.red, michael@0: + src->stops->color.green, michael@0: + src->stops->color.blue, michael@0: + src->stops->color.alpha); michael@0: michael@0: _cairo_pattern_init_solid (&solid, michael@0: - &src->stops->color, michael@0: + &color, michael@0: CAIRO_CONTENT_COLOR_ALPHA); michael@0: michael@0: status =