diff -r d5e927d5853b -r 7cee158cb8cd javauis/lcdui_akn/lcdgr/src/CMIDGraphics.cpp --- a/javauis/lcdui_akn/lcdgr/src/CMIDGraphics.cpp Tue Sep 14 21:06:50 2010 +0300 +++ b/javauis/lcdui_akn/lcdgr/src/CMIDGraphics.cpp Wed Sep 15 12:05:25 2010 +0300 @@ -134,6 +134,12 @@ // need to be calculated. eglAvailable = ETrue; } + + // Use premultiplied colors in target bitmap if + // EGL surface is in use or Canvas has video overlay active. + TBool premultiplied = eglAvailable || + (iCanvasTarget && iCanvasTarget->IsVideoOverlayActive()); + #else // !RD_JAVA_NGA_ENABLED TBool CMIDGraphics::ProcessL( const TMIDBufferOp*& aRead, const TMIDBufferOp* aEnd, @@ -350,7 +356,7 @@ #ifndef RD_JAVA_NGA_ENABLED graphics.DrawImage(image, drawImage->iPoint, drawImage->iAnchor); #else // RD_JAVA_NGA_ENABLED - graphics.DrawImage(image, drawImage->iPoint, drawImage->iAnchor, eglAvailable); + graphics.DrawImage(image, drawImage->iPoint, drawImage->iAnchor, premultiplied); if (eglAvailable) { UpdateRect(CalcDstRect( @@ -378,7 +384,7 @@ graphics.DrawRegion( image, drawRegion->iSrcPosition, drawRegion->iSrcSize, drawRegion->iTransform, drawRegion->iDstPoint, - drawRegion->iAnchor, eglAvailable); + drawRegion->iAnchor, premultiplied); if (eglAvailable) { UpdateRect(CalcDstRect(drawRegion->iDstPoint, drawRegion->iSrcSize, @@ -495,6 +501,12 @@ premultiplied = ETrue; UpdateRect(aRect); } + + // Video overlay support + if (iCanvasTarget && iCanvasTarget->IsVideoOverlayActive()) + { + premultiplied = ETrue; + } #endif err = iGraphics->DrawPixels(aType, aAddress, aLength, aScanLength,