Попробуйте следующий простой пример:
<html>
<head>
<style>
div,
input {
border: 1px solid #000;
margin: 2px;
padding: 3px;
width: 100px;
}
</style>
</head>
<body>
<div>div</div>
<input value="input" />
</body>
</html>
Обратите внимание на div, и входные данные имеют различную ширину. На самом деле ширина ввода составляет 92 пикселя. Для ввода Firefox вычисляет ширину за пределами границы и отступов, так же, как IE делает для всего. Разве он не должен обрабатывать входные элементы так же, как все остальное, и добавлять отступы и границы к ширине?