В функции resetImage () в app.js вы устанавливаете currentScale равным 1. Затем изображение будет нарисовано в масштабе 1: 1 на холсте.
Вы не хотите этого, потому что таким образом изображение будет нарисовано в зависимости от его собственной ширины / высоты на холсте. Большие изображения будут отображаться в увеличенном виде, а маленькие изображения будут уменьшаться.
Вместо этого вы хотите инициализировать масштаб в зависимости от ширины / высоты входного источника, чтобы на холсте было нарисовано все изображение. Оптимальный способ сделать это так:
currentScale = Math.min(canvas.width/image.width, canvas.height/image.height);