Хорошо, у вас есть несколько вариантов:
Вы можете сделать свое собственное масштабирование координат и размеров, например,
ctx.strokeRect( scaleX * x, scaleY * y, scaleX * width, scaleY * height) ;
И вам нужно применить масштабирование ко всемдругие объекты тоже.
В качестве альтернативы вы можете применить масштабирование, но не полагаться на lineWidth для рисования границы прямоугольника.Простым способом было бы нарисовать прямоугольник, заполнив правильную область и затем удалив внутреннюю часть, за вычетом границы, например:
var scaleX = 1.5, scaleY = 2;
var lineWidth = 2;
ctx.scale(scaleX, scaleY);
ctx.fillStyle = "#000";
ctx.fillRect(100, 50, 100,
ctx.clearRect(100+lineWidth/scaleX, 50+lineWidth/scaleY, 100-(2*lineWidth)/scaleX, 60-(2*lineWidth)/scaleY);