diff --git a/panda/src/rocket/rocketRenderInterface.cxx b/panda/src/rocket/rocketRenderInterface.cxx index a049a78c53..b34acea426 100644 --- a/panda/src/rocket/rocketRenderInterface.cxx +++ b/panda/src/rocket/rocketRenderInterface.cxx @@ -256,11 +256,16 @@ GenerateTexture(Rocket::Core::TextureHandle& texture_handle, PTA_uchar image = tex->modify_ram_image(); // Convert RGBA to BGRA - for (size_t i = 0; i < image.size(); i += 4) { - image[i] = source[i + 2]; - image[i + 1] = source[i + 1]; - image[i + 2] = source[i]; - image[i + 3] = source[i + 3]; + size_t row_size = source_dimensions.x * 4; + size_t y2 = image.size(); + for (size_t y = 0; y < image.size(); y += row_size) { + y2 -= row_size; + for (size_t i = 0; i < row_size; i += 4) { + image[y2 + i + 0] = source[y + i + 2]; + image[y2 + i + 1] = source[y + i + 1]; + image[y2 + i + 2] = source[y + i]; + image[y2 + i + 3] = source[y + i + 3]; + } } tex->set_wrap_u(Texture::WM_clamp);