el tipo de borde none es que no define borde, por lo cual lo quitas, y luego se lo pones por eso "brinca"
prueba con esto:
Cita: border:1px solid transparent;
lo que te refieres con los margenes es algo asi..
Cita: .img_boton
{ width:20px;
height:20px;
margin:1px;
vertical-align:bottom;
float:left;
}
.img_boton:hover
{ width:20px;
margin:0px;
height:20px;
border:1px solid #286FB2;
background:#AAD6FF;
}
como vez, te faltava quitarselo cuando esta en hover, ya que es cuando se le agrega el borde.
y segun el box model el borde esta entre el margen y el padding..