Я не понимаю, почему следующие фрагменты кода дают разные результаты, потому что css будет масштабировать холст при его увеличении,
<style>
#canvas {
width: 800px;
height: 600px;
}
</style>
<canvas id="canvas"></canvas>
В отличие от этого подхода (который работает как ожидалось):
<canvas id="canvas" width="800px" height="600px"></canvas>