вот вам пример для размышления
https://codepen.io/anon/pen/vwOrKXпочему кисить на резких поворотах уносить в сторону
Потому что
lineJoin = "miter"
вот так вот работает
И почему при изменений размера в can.width; и can.height;
Центр кисти уходит куда то в сторону от курсора
Размеры канваса это вовсе не размеры хтмл-элемента. Можно в маленький квадратик засунуть огромный канвас, он будет масштабироваться.
Чтобы точно совмещать точку на канвасе и курсор, нужно переносить координаты мышки в систему координат канваса, для этого нужно знать отношение
canvas.width/canvas.clientWidth
к примеру
Поэтому размеры хтмл-элемента канваса лучше задавать явно и жесткие. Не придется пересчитывать коэффициенты при каждом ресайзе.