L'adattamento di un BOX al suo contenuto si perde in alcune situazioni e viene garantito da altre:

se il BOX ha position: absolute
se il BOX ha impostato il float
se il BOX è contenuto in un BOX la cui altezza è definita

ed altre diavolerie che sono Browser dipendenti.
Non tutti i Browser, difatti, utilizzano lo stesso BOX Model (non mi stancherò mai di dirlo)

Prova, difatti a togliere il float e... magia!!!!