Короче опишу, в чём была проблема у меня. Загружая изображения, я не менял исходный размер, при этом, отображаясь, картинка должна была занимать 100% ширины блока, что ~600px. Поэтому при загрузке изображений с расширением 300:400 оно таким и оставалось, а потом расширялось до 600px из-за чего качество сильно и страдало. Решил проблему этими строками:
$img->resize(650, null, function ($constraint) {
$constraint->aspectRatio();
});