+ QPalette palette = QPalette();
+ QColor text_color = palette.color(QPalette::Active, QPalette::WindowText);
+ QColor bg_color = palette.color(QPalette::Active, QPalette::Window);
+
+ // guess whether we are in dark mode
+ if (text_color.black() > bg_color.black())
+ // not in dark mode, do nothing
+ return pixmap;
+
+ // create a layer with black text turned to QPalette::WindowText
+ QPixmap black_overlay(pixmap.size());
+ black_overlay.fill(text_color);
+ black_overlay.setMask(pixmap.createMaskFromColor(Qt::black, Qt::MaskOutColor));
+
+ // create a layer with blue text turned to lighter blue
+ QPixmap blue_overlay(pixmap.size());
+ QColor math_blue(0, 0, 255);
+ blue_overlay.fill(guiApp->colorCache().get(Color(Color_math)));
+ blue_overlay.setMask(pixmap.createMaskFromColor(math_blue, Qt::MaskOutColor));
+
+ // create a layer with ("latex") red text turned to lighter red
+ QPixmap red_overlay(pixmap.size());
+ QColor math_red(128, 0, 0);
+ red_overlay.fill(guiApp->colorCache().get(Color(Color_latex)));
+ red_overlay.setMask(pixmap.createMaskFromColor(math_red, Qt::MaskOutColor));
+
+ // put layers on top of existing pixmap
+ QPainter painter(&pixmap);
+ painter.drawPixmap(pixmap.rect(), black_overlay);
+ painter.drawPixmap(pixmap.rect(), blue_overlay);
+ painter.drawPixmap(pixmap.rect(), red_overlay);
+
+ return pixmap;