Taking one of your tables as an example, you know have
width=100%, then width=411 for one of its cells and width=504 for the other. So width=100% might be suggesting 1020, but the individual cells are ordering a total of 916 pixels. something has to go wrong somewhere.
Different browsers may handle this problem differently, making one look fine and not another.
So at least one column in the table should NOT have its width defined in this way. Options? Either remove one of the cell widths, so that it will just 'fit' whatever space is there, or again use percentages. Even if you use percentages one column should be left to just use the remaining space - ie don't set a width for all cells across the table.
One last problem can happen if you use percentages. If you set a column to have a width of say 25% of the total width of the table, but that cell includes a picture with a width specified as say 300 pixels, the picture can force the cell size to change to be big enough.
Hope that helps, I know it is very frustating, I've spent half the day doing battle with forms in PHP which is also not funny.
Good luck
Marcus