diff --git a/radio/src/thirdparty/libopenui/src/bitmapbuffer.cpp b/radio/src/thirdparty/libopenui/src/bitmapbuffer.cpp index ee99591b1..bb952fd12 100644 --- a/radio/src/thirdparty/libopenui/src/bitmapbuffer.cpp +++ b/radio/src/thirdparty/libopenui/src/bitmapbuffer.cpp @@ -326,18 +326,24 @@ void BitmapBuffer::drawMask(coord_t x, coord_t y, const BitmapBuffer * mask, Lcd width = xmax - x; } + if (x < 0) { + width += x; + offset -= x; + x = 0; + } + if (y >= ymax || x >= xmax || width <= 0 || x + width < xmin || y + height < ymin) { return; } pixel_t color = lcdColorTable[COLOR_IDX(flags)]; - for (coord_t row=0; row= ymax) continue; - pixel_t * p = getPixelPtr(x, y+row); + pixel_t * p = getPixelPtr(x, y + row); const pixel_t * q = mask->getPixelPtr(offset, row); - for (coord_t col=0; col