CheckList
Version
7.1.0
In What environments are you experiencing the problem?
Chrome
Node Version (if applicable)
22.12.0
Link To Reproduction
https://codesandbox.io/p/devbox/y6ct9c
Steps To Reproduce
In Fabric v7, applying opacity < 1 to an object with both fill and stroke produces a visible inner stroke blending artifact when objectCaching is set to false.
When objectCaching is true (default), the rendering appears correct.
In Fabric v5, this issue does not occur — opacity behaves consistently and does not produce the inner stroke blending artifact.
This suggests a behavioral change or inconsistency in the v7 rendering pipeline.
opacity=1
<--->
opacity=0.7
Expected Behavior
- Opacity should affect both fill and stroke uniformly.
- Rendering should be visually consistent regardless of objectCaching value.
- Behavior should match Fabric v5, where no inner stroke blending artifact appears.
Question:
- Is this difference in behavior between v5 and v7 intentional due to the new rendering/caching architecture, or is it considered a regression?
- Should opacity compositing behave consistently regardless of objectCaching?
Actual Behavior
with objectCaching: false , When opacity < 1, the inner half of the stroke visibly blends with the fill, creating a darker inner edge.
With: objectCaching: true, Rendering appears visually correct.
Comparison with v5
Using the same configuration in Fabric v5:
- No inner stroke blending artifact occurs
- Opacity renders consistently
paintFirst: 'stroke' prevents visible overlap artifacts
Error Message & Stack Trace
CheckList
Version
7.1.0
In What environments are you experiencing the problem?
Chrome
Node Version (if applicable)
22.12.0
Link To Reproduction
https://codesandbox.io/p/devbox/y6ct9c
Steps To Reproduce
In Fabric v7, applying opacity < 1 to an object with both fill and stroke produces a visible inner stroke blending artifact when objectCaching is set to false.
When objectCaching is true (default), the rendering appears correct.
In Fabric v5, this issue does not occur — opacity behaves consistently and does not produce the inner stroke blending artifact.
This suggests a behavioral change or inconsistency in the v7 rendering pipeline.
opacity=1<--->
opacity=0.7Expected Behavior
Question:
Actual Behavior
with
objectCaching: false, When opacity < 1, the inner half of the stroke visibly blends with the fill, creating a darker inner edge.With:
objectCaching: true, Rendering appears visually correct.Comparison with v5
Using the same configuration in Fabric v5:
paintFirst: 'stroke'prevents visible overlap artifactsError Message & Stack Trace