function renderCanvas() {
canvasLayer_1.width = 40;
canvasPixelWidth = Math.floor((canvasBase.offsetWidth * 0.99) / canvasLayer_1.width); //здесь проблема с canvasBase.offsetWidth
canvasWrapper.style.width = `${canvasLayer_1.width * canvasPixelWidth}px`;
canvasLayer_1.height = Math.floor(canvasBase.offsetHeight * 0.99 / canvasPixelWidth);
canvasWrapper.style.height = `${canvasLayer_1.height * canvasPixelWidth}px`;
}
Сначала задаётся ширина канвасу, потом в зависимости от ширины идёт расчёт какое количество пикселей(у меня пиксельная рисовалка) влезет во внешний контейнер и от этого уже расчитывается ширина контейнера канваса. canvasBase это контейнер в котором лежат canvas.