However, Flutter for Web, or more specifically, the HTML renderer,
used to implement it in a wrong way
due to incorrect understanding of the BMP format specification.
As a result, if the app or library uses
ui.ImageDescriptor.raw or ui.decodeImageFromPixels,
it had to feed pixels from bottom to top and swap their red and blue channels
(for example, with the ui.PixelFormat.rgba8888 format,
the first 4 bytes of the data were considered the blue, green,
red, and alpha channels of the first pixel instead.)

This bug has been fixed by engine#29593,
but apps and libraries have to correct how their data are generated.

Description of change

The pixels argument of ui.ImageDescriptor.raw or ui.decodeImageFromPixels
now uses the correct pixel order described by format,
and originates from the top left corner.