Это устранило проблему размытия для меня, спасибо.

Я хочу предложить еще более простое решение:

Ваше решение регулирует «внутренние» размеры холста (каковы, по его мнению, его ширина и высота), чтобы они соответствовали его истинным размерам (каковы на самом деле его ширина и высота). Вы можете добиться этого с помощью свойств clientWidth и clientHeight элемента canvas, таким образом:

let c = document.getElementById («myCanvasId»);
let dpi = window.devicePixelRatio;
c.setAttribute («height», c.clientHeight * dpi);
c.setAttribute ( «Ширина», c.clientWidth * dpi);

clientWidth и clientHeight объясняются здесь: https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight#Example