feComponentTransfer, feFuncA, linear: negative alpha blends color with background image
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Inkscape |
Invalid
|
Medium
|
Unassigned |
Bug Description
Applying a linear component transfer function for alpha with slope 1.0 and a negative intercept (to reduce alpha) will cause pixels with a negative resulting alpha value to render as if its solid RGB color value is blended (in 'Screen' mode) with the background image. The expectation would be that all pixels with resulting alpha <= 0 are fully transparent.
Steps to reproduce:
open and investigate details in attached example file: the unexpected filter results are in the bottom two examples of the middle column.
The examples in the third column show the effect of a real blending (in 'Screen' mode) for visual comparison. It uses a simple filter with feBlend within a layer group which has BackgroundImage enabled as filter source (i.e. in this document, BackgroundImage as source has no effect outside that one layer, and does not influence the feComponentTransfer results this report is about).
Reproduced with Inkscape 0.92pre3 r15231 on OS X 10.7.5 and with Inkscape 0.92+devel r15298 on Ubuntu 14.04 LTS.
Based on tests with archived builds:
- not reproduced with Inkscape 0.91 r13725,
- not reproduced with lp:inkscape rev <= 14527,
- reproduced with lp:inkscape rev >= 14536;
the unexpected rendering results may have been exposed by the changes in commit 14532.
Relevant changelog:
https:/
Possibly relevant revision:
r14531: Fix two bugs with component transfer filter primitive:
1. Discrete type was ignoring last value in list.
2. Change in alpha was not propogated to pre-multiplied color
values leading to "ghosting".
https:/
Bitmap export of page area with Inkscape 0.92pre3 r15231