Для тех, кому интересно, почему это происходит, поясню:
img по умолчанию строчный элемент, т.е., элемент, составляющий строку. В строке, по умолчанию же, установлено выравнивание по базовой линии шрифта.
Пример:
Lorem Ipsum Dolor Sit Amet
Выделите текст, и Вы увидите, что базовая линия находится на каком-то расстоянии от нижней линии.
Так вот, три пикселя снизу изображения — это расстояние от нижней линии шрифта до базовой для текущего шрифта. Чтобы его не было, нужно, чтобы выполнилось одно из трех условий:
- размер шрифта 0 (очень нехороший вариант);
- выравнивание у изображения не по базовой линии;
- изображение не является строчным элементом
UPD: Чуть не забыл, это касается не только изображения, но и object, embed и iframe. Так что если видите, что снизу остается место, не пытайтесь его замаскировать overflow: hidden или скрытием полос прокрутки — лучше сделайте так, чтобы его не было вообще.