Растяни canvas на css на всю высоту и ширину контейнера, потом программно задай высоту и ширину.
canvas {
width: 100%;
height: 100%;
}
function resize() {
canvas.width = canvas.offsetWidth;
canvas.height= canvas.offsetHeight;
}
Далее рисовать можешь двумя способами, либо попиксельно, либо с учетом масштаба, который вычисляешь.
Еще можешь задать для canvas фиксированный размер, а на css растянуть на весь контейнер. Тогда он как картинка будет масштабироваться.