I can see this just by reading the CSS. Although it seems funky in Firefox, Firefox is doing the right thing. This is very misleading unless you are fairly experienced in CSS positioning because you then look for the error in the wrong place. In summary it goes like this. A floated div must have its width defined. Which yours does. In accordance with the recommendation for browser vendors of the W3C contained in CSS 2.1 Firefox, all its relatives and nearly every other browser will then ADD the padding, borders and margins. As they should. On that basis your width math will not add up.
IE in the meantime will DEDUCT the same. Useful huh?
That has an advantage superficially that a layout is more likely to run in IE because it takes up less space but it is wrong. Period. What I do on float positioning is that when I define a width and float then THAT IS IT there. For #content I add .post to the CSS and style that. For menu I style #menu ul and downwards.