Repository: fabricjs/fabric.js
Pull request #10313 (2024-12-04 10:08:38)

fix(ColorMatrix): Restore correct alpha for JS colorMatrix filter
<!--
        Hi there!
        Thanks for taking the time and putting the effort into making fabric better! 💖
        Take a look at /CONTRIBUTING.md for crucial instructions regarding local setup, testing etc.
        https://github.com/fabricjs/fabric.js/blob/master/CONTRIBUTING.md

        Adding tests that verify your fix and safeguard it from unwanted loss and changes is a MUST.

        Pull Requests are not always simple. Don't hesitate to ask for help (beware of [gotchas](http://fabricjs.com/fabric-gotchas) 😓).
        We appreciate your effort and would like the process to be productive and enjoyable.
        A strong community means a strong and better product for everyone.

        Each PR can introduce a single feature or change or fix a single bug
        Large refactors PR have been discussed before and probably splitted in steps
-->

## Description

While touching the code i broke the ColorMatrix filter

<!-- Summarize the reasons of your changes and the meaning of your code. Why the code you are changing is wrong? why your is better? -->
<!-- If you are fixing a regression, please link the commit that introduced the bug -->
<!-- If you are proposing a feature, please link the discussion/issue where that was presented and discussed -->
<!-- Is this pullrequest a follow up from an open issue? if so please link the issue like the example below in addition to the summary -->
<!-- Related to #1234 -->

## In Action

<!-- Add screenshots or recordings if necessary or requested -->
<!-- Are you proposing a performance change? show a some proof of performance -->


codesandbox[bot]: #### Review or Edit in CodeSandbox

Open the branch in <a href="https://codesandbox.io/p/github/fabricjs/fabric.js/broken-filter?mode=review&utm_source=gh_app">Web Editor</a> &bull; <a href="https://codesandbox.io/p/vscode?owner=fabricjs&repo=fabric.js&branch=broken-filter&utm_source=gh_app">VS Code</a> &bull; <a href="https://codesandbox.io/p/vscode?owner=fabricjs&repo=fabric.js&branch=broken-filter&insiders=true&utm_source=gh_app">Insiders</a><br>
<details>
<summary>Open Preview</summary>
<ul><li><a href="https://codesandbox.io/p/devtool/preview/fabricjs/fabric.js/broken-filter?task=next&port=3000&redirect=true&utm_source=gh_app">Run Next Template</a></li><li><a href="https://codesandbox.io/p/devtool/preview/fabricjs/fabric.js/broken-filter?task=node&port=8080&redirect=true&utm_source=gh_app">Run Node Template</a></li><li><a href="https://codesandbox.io/p/devtool/preview/fabricjs/fabric.js/broken-filter?task=vanilla&port=1234&redirect=true&utm_source=gh_app">Run Vanilla Template</a></li><li><a href="https://codesandbox.io/p/devtool/preview/fabricjs/fabric.js/broken-filter?task=vue&port=5173&redirect=true&utm_source=gh_app">Run Vue Template</a></li></ul>
</details>

<!-- open-in-codesandbox:complete -->

github-actions[bot]: <!-- BUILD STATS COMMENT -->
**Build Stats**

 | file / KB (diff) | bundled | minified | 
 | --- | --- | --- | 
 | fabric | 922.430 (**+0.048**) | 306.271 (**+0.032**) | 

github-actions[bot]: Coverage after merging <b>broken-filter</b> into <b>master</b> will be<table><tbody><tr><th>84.84%</th></tr></tbody></table>

<details><summary>Coverage Report</summary><table><tbody><tr><th>File</th><th>Stmts</th><th>Branches</th><th>Funcs</th><th>Lines</th><th>Uncovered Lines</th></tr><tr><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts'>fabric.ts</a></td><td><b>86.92%</b></td><td><b>20%</b></td><td><b>0%</b></td><td><b>95.79%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L10'>10</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L144'>144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L144'>144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L144'>144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L144'>144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L144'>144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L190'>190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L31'>31</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L33-L34'>33&ndash;34</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L34'>34</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L34'>34</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L34'>34</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L34'>34</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/fabric.ts#L8'>8</a></td></tr><tr><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/index.node.ts'>index.node.ts</a></td><td><b>14.29%</b></td><td>100%</td><td><b>0%</b></td><td><b>25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/index.node.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/index.node.ts#L26'>26</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/index.node.ts#L29'>29</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/index.node.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/index.node.ts#L44'>44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/index.node.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>extensions/aligning_guidelines/util</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/extensions/aligning_guidelines/util/basic.ts'>basic.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>extensions/data_updaters/origins</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/extensions/data_updaters/origins/index.ts'>index.ts</a></td><td><b>97.50%</b></td><td><b>75%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/extensions/data_updaters/origins/index.ts#L22-L23'>22&ndash;23</a></td></tr><tr><td colspan='6'><b>src</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/ClassRegistry.ts'>ClassRegistry.ts</a></td><td><b>91.18%</b></td><td><b>64.29%</b></td><td>100%</td><td><b>97.92%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/ClassRegistry.ts#L35'>35</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/ClassRegistry.ts#L56'>56</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts'>Collection.ts</a></td><td><b>72.55%</b></td><td><b>33.85%</b></td><td><b>51.61%</b></td><td><b>84.67%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L153'>153</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L155-L157'>155&ndash;157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L159'>159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L167'>167</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L169-L170'>169&ndash;170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L181'>181</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L217'>217</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L241'>241</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L243'>243</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L245'>245</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L252'>252</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L254'>254</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L263'>263</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L265'>265</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L270'>270</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L279'>279</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L281'>281</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L286-L287'>286&ndash;287</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L302'>302</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L304'>304</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L306'>306</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L309-L310'>309&ndash;310</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L327-L328'>327&ndash;328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L328-L329'>328&ndash;329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L333-L334'>333&ndash;334</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L337-L338'>337&ndash;338</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L338-L344'>338&ndash;344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L346-L348'>346&ndash;348</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L350'>350</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L75'>75</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Collection.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/CommonMethods.ts'>CommonMethods.ts</a></td><td><b>88.57%</b></td><td><b>64.29%</b></td><td><b>83.33%</b></td><td><b>96%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/CommonMethods.ts#L50'>50</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/CommonMethods.ts#L52'>52</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/CommonMethods.ts#L9'>9</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/EventTypeDefs.ts'>EventTypeDefs.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts'>Intersection.ts</a></td><td><b>81.42%</b></td><td><b>41.30%</b></td><td><b>73.33%</b></td><td><b>96.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L105'>105</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L132-L133'>132&ndash;133</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L166'>166</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L184-L190'>184&ndash;190</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L228'>228</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L237'>237</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L239'>239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L289-L291'>289&ndash;291</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L297'>297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L78'>78</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Intersection.ts#L80'>80</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts'>Observable.ts</a></td><td><b>72.25%</b></td><td><b>44.19%</b></td><td><b>31.25%</b></td><td><b>86.36%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L144'>144</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L153'>153</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L156'>156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L168'>168</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L170'>170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L172'>172</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L175'>175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L41'>41</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L43'>43</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L68-L70'>68&ndash;70</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L72'>72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L78'>78</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L80'>80</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L82-L85'>82&ndash;85</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Observable.ts#L87-L91'>87&ndash;91</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts'>Point.ts</a></td><td><b>84.95%</b></td><td><b>62%</b></td><td><b>44.12%</b></td><td><b>92.68%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L104'>104</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L157'>157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L179'>179</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L216'>216</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L225'>225</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L236-L239'>236&ndash;239</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L259'>259</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L284-L285'>284&ndash;285</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L294-L297'>294&ndash;297</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L328'>328</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L341'>341</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L349'>349</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L359'>359</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Point.ts#L95'>95</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts'>Shadow.ts</a></td><td><b>80.91%</b></td><td><b>13.04%</b></td><td><b>37.50%</b></td><td><b>90%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L139'>139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L139-L140'>139&ndash;140</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L145-L150'>145&ndash;150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L159'>159</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L194'>194</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L194'>194</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L196-L197'>196&ndash;197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L197'>197</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L199'>199</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L206'>206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L223-L230'>223&ndash;230</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L232'>232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L232'>232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Shadow.ts#L234-L235'>234&ndash;235</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/cache.ts'>cache.ts</a></td><td><b>83.72%</b></td><td><b>45.45%</b></td><td><b>75%</b></td><td><b>90.14%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/cache.ts#L57'>57</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/cache.ts#L59'>59</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/cache.ts#L71-L72'>71&ndash;72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/cache.ts#L74-L77'>74&ndash;77</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts'>config.ts</a></td><td><b>82.63%</b></td><td><b>20%</b></td><td><b>44.44%</b></td><td><b>94.20%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L127'>127</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L135-L136'>135&ndash;136</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L138-L141'>138&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L146-L147'>146&ndash;147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L151'>151</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L156'>156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L156'>156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L156'>156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L156'>156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L156'>156</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/config.ts#L156'>156</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/typedefs.ts'>typedefs.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/ActiveSelectionLayoutManager.ts'>ActiveSelectionLayoutManager.ts</a></td><td><b>83.33%</b></td><td><b>61.54%</b></td><td><b>28.57%</b></td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/ActiveSelectionLayoutManager.ts#L43'>43</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/ActiveSelectionLayoutManager.ts#L47'>47</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutManager.ts'>LayoutManager.ts</a></td><td><b>89.25%</b></td><td><b>65.48%</b></td><td><b>53.85%</b></td><td><b>99.31%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutManager.ts#L279'>279</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutManager.ts#L344'>344</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutManager.ts#L355'>355</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/constants.ts'>constants.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts'>index.ts</a></td><td><b>48.57%</b></td><td><b>37.50%</b></td><td><b>80%</b></td><td><b>66.67%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L1'>1</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L1-L2'>1&ndash;2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L2'>2</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L2-L3'>2&ndash;3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L3'>3</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L3-L4'>3&ndash;4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L4'>4</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L4-L5'>4&ndash;5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L5'>5</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/index.ts#L5-L6'>5&ndash;6</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/types.ts'>types.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/LayoutManager/LayoutStrategies</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts'>ClipPathLayout.ts</a></td><td><b>71.05%</b></td><td><b>37.50%</b></td><td>100%</td><td><b>78.95%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L41-L44'>41&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L46-L48'>46&ndash;48</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L57-L58'>57&ndash;58</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts#L66-L69'>66&ndash;69</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/FitContentLayout.ts'>FitContentLayout.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/FixedLayout.ts'>FixedLayout.ts</a></td><td><b>85.71%</b></td><td><b>20%</b></td><td>100%</td><td>100%</td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/FixedLayout.ts#L23'>23</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts'>LayoutStrategy.ts</a></td><td><b>84.30%</b></td><td><b>50%</b></td><td><b>71.43%</b></td><td><b>96.51%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L46'>46</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L52'>52</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L73'>73</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L73'>73</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L75'>75</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts#L88'>88</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/utils.ts'>utils.ts</a></td><td><b>62.90%</b></td><td><b>7.14%</b></td><td>100%</td><td><b>78.72%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/utils.ts#L28-L32'>28&ndash;32</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/utils.ts#L34-L35'>34&ndash;35</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/utils.ts#L39'>39</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/utils.ts#L39-L44'>39&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/LayoutManager/LayoutStrategies/utils.ts#L47'>47</a></td></tr><tr><td colspan='6'><b>src/Pattern</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts'>Pattern.ts</a></td><td><b>52.08%</b></td><td><b>2.86%</b></td><td><b>10%</b></td><td><b>63.08%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L105-L107'>105&ndash;107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L113'>113</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L113-L114'>113&ndash;114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L117-L119'>117&ndash;119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L119'>119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L119-L122'>119&ndash;122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L130-L132'>130&ndash;132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L132'>132</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L132-L138'>132&ndash;138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L140-L141'>140&ndash;141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L150'>150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L153-L160'>153&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L160'>160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L160-L164'>160&ndash;164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L174-L175'>174&ndash;175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L175'>175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L175'>175</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L175-L176'>175&ndash;176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L176-L182'>176&ndash;182</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L182'>182</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L182'>182</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L182-L183'>182&ndash;183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L183'>183</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L183-L188'>183&ndash;188</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L190-L199'>190&ndash;199</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L203-L206'>203&ndash;206</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L209-L210'>209&ndash;210</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L212-L214'>212&ndash;214</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L216-L218'>216&ndash;218</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L218'>218</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L218-L221'>218&ndash;221</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L33'>33</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/Pattern.ts#L37'>37</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/index.ts'>index.ts</a></td><td><b>50%</b></td><td>100%</td><td>100%</td><td><b>50%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/index.ts#L2'>2</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/Pattern/types.ts'>types.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/brushes</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts'>BaseBrush.ts</a></td><td><b>78.67%</b></td><td><b>8.33%</b></td><td><b>14.29%</b></td><td><b>88.55%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L110'>110</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L114'>114</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L114-L115'>114&ndash;115</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L124-L125'>124&ndash;125</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L130'>130</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L135'>135</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L143'>143</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L155'>155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L155'>155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L155'>155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L155'>155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L155-L160'>155&ndash;160</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/BaseBrush.ts#L99'>99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts'>CircleBrush.ts</a></td><td><b>52.10%</b></td><td><b>12.50%</b></td><td><b>12.50%</b></td><td><b>58.25%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L100-L108'>100&ndash;108</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L108-L118'>108&ndash;118</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L130-L139'>130&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L55'>55</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L69'>69</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L76'>76</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L78-L79'>78&ndash;79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L79'>79</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L83'>83</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L85-L86'>85&ndash;86</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/CircleBrush.ts#L92-L98'>92&ndash;98</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts'>PatternBrush.ts</a></td><td><b>43.48%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>53.57%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L21'>21</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L21'>21</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L25-L34'>25&ndash;34</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L36'>36</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L43'>43</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L43-L44'>43&ndash;44</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L51-L53'>51&ndash;53</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L53'>53</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L53-L54'>53&ndash;54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L60-L64'>60&ndash;64</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L64'>64</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PatternBrush.ts#L64-L69'>64&ndash;69</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts'>PencilBrush.ts</a></td><td><b>40.14%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>52.02%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L103'>103</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L103'>103</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L116'>116</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L124'>124</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L129'>129</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L138-L139'>138&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L146'>146</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L146-L147'>146&ndash;147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L147'>147</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L147-L152'>147&ndash;152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L155-L158'>155&ndash;158</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L167-L169'>167&ndash;169</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L176'>176</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L176-L177'>176&ndash;177</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L181-L185'>181&ndash;185</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L185'>185</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L185'>185</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L185'>185</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L185'>185</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L188-L205'>188&ndash;205</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L215'>215</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L224-L232'>224&ndash;232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L232'>232</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L235-L238'>235&ndash;238</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L244'>244</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L244'>244</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L244-L257'>244&ndash;257</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L257'>257</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L257-L266'>257&ndash;266</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L274-L276'>274&ndash;276</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L276'>276</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L276-L280'>276&ndash;280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L280'>280</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L280-L299'>280&ndash;299</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L54'>54</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L68'>68</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L68'>68</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L71'>71</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L71'>71</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L71-L72'>71&ndash;72</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L75'>75</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L84'>84</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L84'>84</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L87'>87</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L87-L88'>87&ndash;88</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L88'>88</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L88'>88</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L88'>88</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L91'>91</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L91'>91</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L91'>91</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L91-L92'>91&ndash;92</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/PencilBrush.ts#L92'>92</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts'>SprayBrush.ts</a></td><td><b>51.67%</b></td><td><b>0%</b></td><td><b>0%</b></td><td><b>58.86%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L100'>100</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L107'>107</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L107-L112'>107&ndash;112</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L118-L120'>118&ndash;120</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L122'>122</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L128-L135'>128&ndash;135</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L137-L139'>137&ndash;139</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L141'>141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L141'>141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L141-L148'>141&ndash;148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L148'>148</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L152'>152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L157'>157</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L162'>162</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L164'>164</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L169-L170'>169&ndash;170</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L172'>172</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L180'>180</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L182'>182</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L185'>185</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L187'>187</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L195'>195</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L198-L200'>198&ndash;200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L200'>200</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L200-L207'>200&ndash;207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L207'>207</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L207-L210'>207&ndash;210</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L212'>212</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L22'>22</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L67'>67</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L85-L87'>85&ndash;87</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/SprayBrush.ts#L94-L99'>94&ndash;99</a></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/brushes/typedefs.ts'>typedefs.ts</a></td><td>100%</td><td>100%</td><td>100%</td><td>100%</td><td></td></tr><tr><td colspan='6'><b>src/canvas</b></td></tr><tr><td>&nbsp; &nbsp;<a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts'>Canvas.ts</a></td><td><b>74.43%</b></td><td><b>34.06%</b></td><td><b>87.50%</b></td><td><b>86.28%</b></td><td><a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1010'>1010</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1012-L1013'>1012&ndash;1013</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1016'>1016</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1020-L1021'>1020&ndash;1021</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1024-L1025'>1024&ndash;1025</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1030'>1030</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1035'>1035</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1064'>1064</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1066'>1066</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1080-L1085'>1080&ndash;1085</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1119'>1119</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1138'>1138</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1141'>1141</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1145'>1145</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1150'>1150</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1152'>1152</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1155'>1155</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L117'>117</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1218-L1222'>1218&ndash;1222</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1256'>1256</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1256'>1256</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1264'>1264</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1267'>1267</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1267'>1267</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1301'>1301</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1301-L1305'>1301&ndash;1305</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1308'>1308</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1311'>1311</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1329'>1329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1329'>1329</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1332'>1332</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1343'>1343</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1394-L1413'>1394&ndash;1413</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1413-L1415'>1413&ndash;1415</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8a7/src/canvas/Canvas.ts#L1415-L1427'>1415&ndash;1427</a>, <a href='https://github.com/fabricjs/fabric.js/blob/ee1ec09989f430ca4ac3bce3b771439cc0b5c8

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 83a5925de..427440a2e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
 
 ## [next]
 
+- fix(ColorMatrix): Restore correct alpha for JS colorMatrix filter [#10313](https://github.com/fabricjs/fabric.js/pull/10313)
+
 ## [6.5.2]
 
 - chore(): Reduce some verbose code [#10311](https://github.com/fabricjs/fabric.js/pull/10311)
diff --git a/src/filters/ColorMatrix.spec.ts b/src/filters/ColorMatrix.spec.ts
new file mode 100644
index 000000000..65c126f49
--- /dev/null
+++ b/src/filters/ColorMatrix.spec.ts
@@ -0,0 +1,37 @@
+import { ColorMatrix } from './ColorMatrix';
+import type { T2DPipelineState } from './typedefs';
+
+describe('ColorMatrix', () => {
+  it('apply2D colorsOnly: true', () => {
+    const filter = new ColorMatrix({
+      matrix: [
+        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+      ],
+      colorsOnly: true,
+    });
+    const inputData = {
+      imageData: {
+        data: [1, 2, 3, 4],
+      },
+    } as unknown as T2DPipelineState;
+    filter.applyTo2d(inputData);
+    expect(JSON.stringify(inputData.imageData.data)).toBe('[1289,2594,3899,4]');
+  });
+  it('apply2D colorsOnly: false', () => {
+    const filter = new ColorMatrix({
+      matrix: [
+        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+      ],
+      colorsOnly: false,
+    });
+    const inputData = {
+      imageData: {
+        data: [1, 2, 3, 4],
+      },
+    } as unknown as T2DPipelineState;
+    filter.applyTo2d(inputData);
+    expect(JSON.stringify(inputData.imageData.data)).toBe(
+      '[1305,2630,3955,5280]',
+    );
+  });
+});
diff --git a/src/filters/ColorMatrix.ts b/src/filters/ColorMatrix.ts
index fd4f38e85..0ea8193f2 100644
--- a/src/filters/ColorMatrix.ts
+++ b/src/filters/ColorMatrix.ts
@@ -91,7 +91,8 @@ export class ColorMatrix<
         data[i] += a * m[3];
         data[i + 1] += a * m[8];
         data[i + 2] += a * m[13];
-        data[i + 3] += a * m[18];
+        data[i + 3] =
+          r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;
       }
     }
   }


Test patch:
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 6c281fd07..6958f8fdd 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -44,11 +44,14 @@ jobs:
       - name: Run ${{ matrix.suite }} tests with coverage
         if: matrix.suite == 'visual'
         run: npm run test:visual:coverage
-      - name: Upload test coverage
+      - name: Verify coverage files
+        run: ls -l ./.nyc_output/*.json
+      - name: Upload test coverage ${{ matrix.suite }}
         uses: actions/upload-artifact@v4
         with:
           name: coverage-${{ matrix.suite }}
-          path: .nyc_output/*.json
+          path: ./.nyc_output/*.json
+          include-hidden-files: true
 
   browser:
     needs: [prime-build]
@@ -107,7 +110,8 @@ jobs:
         uses: actions/upload-artifact@v4
         with:
           name: coverage-jest
-          path: .nyc_output/*.json
+          path: ./.nyc_output/*.json
+          include-hidden-files: true
 
   e2e:
     needs: [prime-build]
@@ -131,11 +135,13 @@ jobs:
         with:
           name: e2e-report
           path: ./e2e/test-report/
+          include-hidden-files: true
       - name: Upload Test Coverage
         uses: actions/upload-artifact@v4
         with:
           name: coverage-e2e
           path: ./e2e/test-results/**/coverage.json
+          include-hidden-files: true
   coverage:
     needs: [node-coverage, e2e]
     name: Coverage reporting
@@ -148,21 +154,21 @@ jobs:
           install-system-deps: false
       - uses: actions/download-artifact@v4
         with:
-          name: coverage-unit
-          path: .nyc_output
+          name: coverage-e2e
+          path: ./.nyc_output
       - uses: actions/download-artifact@v4
         with:
-          name: coverage-visual
-          path: .nyc_output
+          name: coverage-jest
+          path: ./.nyc_output
       - uses: actions/download-artifact@v4
         with:
-          name: coverage-e2e
-          path: .nyc_output
+          name: coverage-unit
+          path: ./.nyc_output
       - uses: actions/download-artifact@v4
         with:
-          name: coverage-jest
-          path: .nyc_output
-      - run: ls -l .nyc_output
+          name: coverage-visual
+          path: ./.nyc_output
+      - run: ls -l ./.nyc_output
       - run: npm run coverage:report
       - uses: romeovs/lcov-reporter-action@v0.4.0
         if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'