diff --git a/samples/image/image.cpp b/samples/image/image.cpp index 597314a382..c1e36cc753 100644 --- a/samples/image/image.cpp +++ b/samples/image/image.cpp @@ -319,10 +319,12 @@ public: for ( int x = 0; x < REAL_SIZE; ++x ) { - p.Red() = r; - p.Green() = g; - p.Blue() = b; - p.Alpha() = (Data::Iterator::ChannelType)((x*255.)/REAL_SIZE); + // note that RGB must be premultiplied by alpha + unsigned a = (Data::Iterator::ChannelType)((x*255.)/REAL_SIZE); + p.Red() = r * alpha / 256; + p.Green() = g * alpha / 256; + p.Blue() = b * alpha / 256; + p.Alpha() = a; ++p; // same as p.OffsetX(1) }