Realised whilst doing this I actually took this algorithm from a version of my code that hadn't been patched ._. Anyway, I figured out the fix :D I've got it to a point where it's working, but I've still left some (potential) work for you: - Finding a good value for the variable 'constant', which affects thumb size - Making the thumb slightly darker when the mouse is over it - Using the arrow keys to scroll up and down - Currently, if you click on a part of the scroll bar where the thumb currently is, the thumb immediately jumps to your mouse position. Maybe you could make it so that the thumb 'glides' to this position (I'd be interested to see how you chose to go about that)