If you're requesting draw-change loops for every event fired by the slider then you could easily be running into accumulated drawing loops.
For example, the mouse moves that trigger your slider to move are often fired 30-40 times per second. So doing the math: 1000ms/40events==25ms between slider events being fired.
So if your drawing takes 40ms you might easily be requesting too many draws for the canvas to keep up with (and therefore the slider freezes until the canvas can catch up).
One solution is to set your desired drawing properties in response to the slider event, but not trigger the redraw immediately.
Then create a separate requestAnimationFrame loop that only draws according to the latest drawing properties. The loop will not try to draw every change that the slider sets, it will just draw the latest change.