With --enable-color-correct-rendering, drag images have their color spaces ignored.
This is reproduced in the images/color-profile-image-canvas.html test
The stack where we read the image is as follows
blink::JPEGImageDecoder::OutputScanlines() + 1259
blink::JPEGImageReader::Decode(bool) + 1319
blink::JPEGImageDecoder::Decode(bool) + 1024
blink::JPEGImageDecoder::Decode(unsigned long) + 29
blink::ImageDecoder::FrameBufferAtIndex(unsigned long) + 180
blink::ImageFrameGenerator::Decode(blink::SegmentReader*, bool, unsigned long, blink::ImageDecoder**, SkBitmap*, SkBitmap::Allocator*, blink::ImageDecoder::AlphaOption) + 2268
blink::ImageFrameGenerator::TryToResumeDecode(blink::SegmentReader*, bool, unsigned long, SkISize const&, SkBitmap::Allocator*, blink::ImageDecoder::AlphaOption) + 828
blink::ImageFrameGenerator::DecodeAndScale(blink::SegmentReader*, bool, unsigned long, SkImageInfo const&, void*, unsigned long, blink::ImageDecoder::AlphaOption) + 790
blink::DecodingImageGenerator::onGetPixels(SkImageInfo const&, void*, unsigned long, SkImageGenerator::Options const&) + 1007
SkImageGenerator::getPixels(SkImageInfo const&, void*, unsigned long, SkImageGenerator::Options const*) + 244
SkImageGenerator::getPixels(SkImageInfo const&, void*, unsigned long) + 50
generate_pixels(SkImageGenerator*, SkPixmap const&, int, int) + 584
SkImage_Lazy::lockAsBitmap(SkBitmap*, SkImage::CachingHint, SkImageCacherator::CachedFormat, SkImageInfo const&) const + 1300
SkImage_Lazy::getROPixels(SkBitmap*, SkColorSpace*, SkImage::CachingHint) const + 157
SkBaseDevice::drawImage(SkImage const*, float, float, SkPaint const&) + 151
SkCanvas::onDrawImage(SkImage const*, float, float, SkPaint const*) + 1354
SkCanvas::drawImage(SkImage const*, float, float, SkPaint const*) + 99
SkCanvas::drawImage(sk_sp<SkImage> const&, float, float, SkPaint const*) + 76
blink::DragImage::ResizeAndOrientImage(cc::PaintImage const&, blink::ImageOrientation, blink::FloatSize, float, blink::InterpolationQuality) + 1613
blink::DragImage::Create(blink::Image*, blink::RespectImageOrientationEnum, float, blink::InterpolationQuality, float, blink::FloatSize) + 673
blink::DragImageForImage(blink::Element*, blink::Image*, float, blink::IntPoint const&, blink::IntPoint const&, blink::IntSize const&, blink::IntPoint&) + 1000
The problem seems to be in blink::DragImage::ResizeAndOrientImage.
Comment 1 by ccameron@chromium.org
, May 23 2017