There's a couple things going on here. Not knowing what plot commands you're using, I'll just start with an example. I'm going to load 20 images and tile them using defaults. Nothing special here. I added a border so it's easier to see the image size against this white bg.
facestack=mimread('sources/faces/BioID_15*.pgm');
The default subplot padding is pretty huge. Instead of fiddling with geometries, I just tend to use this:
facestack=mimread('sources/faces/BioID_15*.pgm');
Okay, so that's better, but what if I had paid no attention to the relationship between the aspect ratio of the figure and the aspect ratio of the axes?
facestack=mimread('sources/faces/BioID_15*.pgm');
See what's going on here?