

When CPU rasterization is used, Chrome avoids keeping big images in memory when they are not really needed. If the image is going to be rendered at a size much smaller than the original size, it will be resized to be a power of 2 times smaller than the original, but not smaller than the rendered size. This logic is implemented here and used here, and was first introduced in this commit after two issues were raised: (1, 2).
Example: the element size is 240*240, the image size is 1000*1000. It will be resized to be made 2^2 = 4 times smaller, so it becomes 250*250.
Unfortunately, there is no way to turn off the behavior described above in Chrome as this logic doesn’t depend on flags or precompiler directives.
However, as Chrome uses Skia for image resizing, it was easy to adapt this logic for my project.