Ah this is weird! My understanding is that png doesn't store the images like jpg at all, they use a palette of all the colors in the image. Then each pixel is a reference to this palette. So it's not IDCT scaling, but I imagine there are other tricks to save on space/cpu when decoding pngs.
PNG supports both, palette based (for 8 bit and less), and just straight direct/true color (RGB or ARGB).
(still different from JPEG's method, of course)