diff --git a/imgsrc/close-for-dark-theme.svg b/imgsrc/close-for-dark-theme.svg
new file mode 100644
index 0000000000..d4d38e52cc
--- /dev/null
+++ b/imgsrc/close-for-dark-theme.svg
@@ -0,0 +1,48 @@
+
+
diff --git a/imgsrc/close-for-light-theme.svg b/imgsrc/close-for-light-theme.svg
new file mode 100644
index 0000000000..1648ac347e
--- /dev/null
+++ b/imgsrc/close-for-light-theme.svg
@@ -0,0 +1,48 @@
+
+
\ No newline at end of file
diff --git a/resources/images/close-for-dark-theme.png b/resources/images/close-for-dark-theme.png
new file mode 100644
index 0000000000..4c222c7473
Binary files /dev/null and b/resources/images/close-for-dark-theme.png differ
diff --git a/resources/images/close-for-light-theme.png b/resources/images/close-for-light-theme.png
new file mode 100644
index 0000000000..a32a9e7f34
Binary files /dev/null and b/resources/images/close-for-light-theme.png differ
diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py
index 8c443dbb40..8d2206c648 100644
--- a/src/calibre/gui2/__init__.py
+++ b/src/calibre/gui2/__init__.py
@@ -1120,10 +1120,9 @@ class Application(QApplication):
transient_scroller = 0
if isosx:
transient_scroller = plugins['cocoa'][0].transient_scroller()
- try:
- self.pi.load_style(icon_map, transient_scroller)
- except TypeError:
- self.pi.load_style(icon_map)
+ icon_map[QStyle.SP_CustomBase + 1] = I('close-for-light-theme.png')
+ icon_map[QStyle.SP_CustomBase + 2] = I('close-for-dark-theme.png')
+ self.pi.load_style(icon_map, transient_scroller)
def _send_file_open_events(self):
with self._file_open_lock:
diff --git a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp
index eca591fa75..dbe356b5c1 100644
--- a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp
+++ b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp
@@ -180,6 +180,10 @@ class CalibreStyle: public QProxyStyle {
}
QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const {
+ if (standardIcon == QStyle::SP_DialogCloseButton) {
+ bool is_dark_theme = QApplication::instance()->property("is_dark_theme").toBool();
+ return QIcon(icon_map.value(QStyle::SP_CustomBase + (is_dark_theme ? 2 : 1)));
+ }
if (icon_map.contains(standardIcon)) return QIcon(icon_map.value(standardIcon));
return QProxyStyle::standardIcon(standardIcon, option, widget);
}