That's because in the header (which contains all the infos regarding your image -> size, depth, ect.) were some unknown info's or perhaps a virus.
If you save it new, then a new header is saved also and the problematic infos (or the virus) will be overwritten. That's why...
Once I had the same problem with .inf files.
I realised that by checking the file size. In my case, the size was more than 24KB instead of small 30 bytes or so...
STORMLORD