Lo que sí te puedo asegurar es que no tiene nada que ver con el php... porque el HTML llega a tu navegador como tú lo quieres...
Es posible que sea un problema del HTML o del explorer... cosa que deberías postear en el foro respectivo.
Y ya que estamos en lo HTML...
Si te das cuenta, lo que se ve es el color de fondo de la celda... O sea que el ancho de la imagen es menor que el ancho de la celda. Por eso a la imagen que alineas a la derecha le sobra un poquito de celda a la izquierda y viceversa.
Lo que puede estar pasando es que alguna imagen es más ancha que la suma de las que tienes arriba... y ese 45%, 10%, 45%... puede no ser la mejor forma de repartirlo.
¿Por qué?... porque el tamaño de las celdas es fijo.
Lo mejor será verificar que no haya ninguna imagen (o ancho de tabla) más ancha que la suma de la imágenes de arriba.
También puedes poner a las celdas de arriba un tamaño fijo igual al ancho en píxeles de la imagen que contendrá. Creo que la celda del centro no tiene degradado... esa mejor la pones sin ancho y como fondo.
Saludos