Почему так?
Для картинок (тег img) у вас указаны стили фона - они не работают, потому что тег img это не фоновый элемент.
Картинки обрезаны, потому что высота тега img недостаточная (сама картинка не влезает в размеры тега img)
Что можно тут сделать?
Вариант 1: Использовать картинки размерами кратными с размерами тега img.
Вариант 2: Использовать стиль
object-fit: cover
и растянуть по высоте тег img на нужный размер.
Как растянуть по высоте тег "img"?
Т.к. вам надо без применения height, то можно установить стиль
display: inline-flex
для ссылок (тег "a").
У flex элементов значение стиля align-items по умолчанию - Растягивать элементы на размеры родительского блока
С другой стороны, применение height для картинок даст такой же эффект, но без использования флекса.
Пример с height и flex вариантом
https://jsfiddle.net/f7a2qyj8/