When I recoded my canvas library's filters functionality last year (because: make it more like SVG filters, which allow you to branch the data multiple times, apply various effects, then merge them back into the final output - which is awesome!) I made a decision to include an 'opacity' attribute to each effect so at the end of the effect calculation it can be recombined with the input before outputting to the next effect. This was whimsy on my part, but it does make creating effects like this one quite easy - as can be seen in the Gaussian blur's test demo: <a href="https://scrawl-v8.rikweb.org.uk/demo/filters-001.html" rel="nofollow">https://scrawl-v8.rikweb.org.uk/demo/filters-001.html</a>