On Mon, 15 Dec 2003 07:43:39 -0600, "Stephen J Baker" <sjbaker@xxxxxxxx> wrote: > Raphaël Quinet wrote: > > I don't see how this would happen, except if the downsampling filter > > would be incorrectly processing the R, G, B and A values independently > > (without weighting by A), which is obviously incorrect. > > Well, it's not "obviously incorrect" unless you assume that RGB's are > pre-multiplied by alpha. It looks like you misunderstood what I wrote. I don't know if this is the case here, but a frequent mistake is to confuse how the RGBA values are stored (with or without pre-multiplication of R, G and B by A) and how these values are used in compositing, subsambpling, etc. The best way to store the data is to store it with full precision, so it should be post-multiplied, not pre-multiplied. But when the pixels are used in compositing operations, then they should be multiplied by their alpha values (if possible, using a higher precision for the intermediate steps), otherwise the color of partially or fully transparent pixels would bleed into the neighboring pixels. This is what I described as the "obviously incorrect" way to process these pixels. This is also what has been fixed in a number of GIMP plug-ins by David Necas and others in: http://bugzilla.gnome.org/show_bug.cgi?id=70335 Note that this is exactly what the GIMP does: store the source pixels and the results with post-multiplied alpha, but use the correct weighting for the operations that combine several pixels. > There is actually a GOOD reason to use post-multiplied alpha - and that > is that pre-multiplying RGB by alpha destroys information that might come > in useful later on. If you can choose to postpone the destruction of > data - then that's generally a good thing to do. I agree. This is what the GIMP does and I was definitely not suggesting to change this, so I think that you misunderstood what I wrote. The GIMP will keep on using post-multiplied alpha in the future, and this is a good thing. The whole point of this discussion was based on the fact that because we use post-multiplied alpha, there is some ambiguity about whether the average user is supposed to know and rely on the RGB values of transparent pixels. If we had been using pre-multiplied alpha, then there would be no reason for any debate, because all transparent pixels would have R, G and B = 0. -Raphaël