I've seen battery corrosion from leakage corrode part of the spring away which shortens the spring contact. I've also seen corrosion eat and break off the flat steel type contacts as well.
I've been lucky on some of the coiled types to have enough contact spring left to just grab it with a needle nose and pull it longer so the batteries make contact. This does not usually last very long though.
If this is what happened, the best bet is to try and fabricate and install a new contact maybe from a battery holder from radio shack or something.
I've also seen some that the battery door had the flat type contact that shorted the two batteries sticking out the end of the case together. In this case, I discovered the entire contact plate had fell off. That one took me a few minutes to realize there was supposed to be a contact plate on the door. I had a Thin Scan but I do not recall what type of contact arrangement it had but hopefully the above will be enough to figure it out.
My bet is corrosion ate part or all of the spring steel away on one or more of the ends of the battery compartment and that is why they are loose.
edit: I missed your part about all the steel appearing to be intact. Maybe the spring steel has simply compressed after time?
If no corrosion, try and pull or bend them back out on all ends.