- const border = [300,200];
- let crop = cropinput.value.split(/[^0-9]/).map(pos => pos / 1000);
- let scale = 1 / (crop[2] - crop[0]) || 1;
+ const canvas = [thumbpreview.clientWidth, thumbpreview.clientHeight];
+ const border = [canvas[0], canvas[0] * imgpreview.height / imgpreview.width];
+ const minscale = Math.max(1, canvas[1] / border[1]); // 100% or fit width
+ let crop = cropinput.value.split(/[^0-9.]/).map(pos => pos / 1000);
+ let scale = 1 / (crop[2] - crop[0]) || minscale;