As it turns out, the answer lies in the differences between HTML4 and HTML5, specifically the CSS box-sizing (-moz-box-sizing, -webkit-box-sizing) property. In HTML4, the box-sizing property defaults to "border-box". In HTML5, the box-sizing property defaults to "content-box".
border-box means that the border and padding are included in the box's width. content-box means that the border and padding are extra on top of the width of the box. So where a box would fit nicely between elements in HTML4, its right side border could be cut off in HTML5 because its width does not account for the 1px border.
Solution: add "box-sizing: border-box;" (and related rules for -moz and -webkit) to CSS rules.