I have two guesses:
1) Colorspace information stored in the png image. Your browser then "compensates" for this colorspace.
2) the png is not 24 (or 32) bit. You may have in less than 8-bit colors, indexed, or a myriad of other possibilities that png allows.
--Dave