diff --git a/resources/qml/Avatar.qml b/resources/qml/Avatar.qml
index 54875f9fd23a2011a406bf0454dbaf4b3b972e6b..b1007469afb0c47a1ca9d2f8b6a14061d2dd0a44 100644
--- a/resources/qml/Avatar.qml
+++ b/resources/qml/Avatar.qml
@@ -1,4 +1,5 @@
 import QtQuick 2.6
+import QtQuick.Controls 2.3
 import QtGraphicalEffects 1.0
 
 Rectangle {
@@ -10,15 +11,15 @@ Rectangle {
 	property alias url: img.source
 	property string displayName
 
-	Text {
+	Label {
 		anchors.fill: parent
 		text: chat.model.escapeEmoji(String.fromCodePoint(displayName.codePointAt(0)))
 		textFormat: Text.RichText
-		color: colors.text
 		font.pixelSize: avatar.height/2
 		verticalAlignment: Text.AlignVCenter
 		horizontalAlignment: Text.AlignHCenter
 		visible: img.status != Image.Ready
+		color: colors.brightText
 	}
 
 	Image {
@@ -42,5 +43,5 @@ Rectangle {
 			}
 		}
 	}
-	color: colors.base
+	color: colors.dark
 }
diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml
index a9ae5f5c56b6d6d7a650f1bf623249d9b064c07a..e13cde28ca7a34db5a351d80d7f2f97554559375 100644
--- a/resources/qml/TimelineRow.qml
+++ b/resources/qml/TimelineRow.qml
@@ -54,6 +54,20 @@ MouseArea {
 			}
 		}
 
+		StatusIndicator {
+			state: model.state
+			Layout.alignment: Qt.AlignRight | Qt.AlignTop
+			Layout.preferredHeight: 16
+			width: 16
+		}
+
+		EncryptionIndicator {
+			visible: model.isEncrypted
+			Layout.alignment: Qt.AlignRight | Qt.AlignTop
+			Layout.preferredHeight: 16
+			width: 16
+		}
+
 		ImageButton {
 			visible: timelineSettings.buttons
 			Layout.alignment: Qt.AlignRight | Qt.AlignTop
@@ -87,21 +101,7 @@ MouseArea {
 
 		}
 
-		StatusIndicator {
-			state: model.state
-			Layout.alignment: Qt.AlignRight | Qt.AlignTop
-			Layout.preferredHeight: 16
-			width: 16
-		}
-
-		EncryptionIndicator {
-			visible: model.isEncrypted
-			Layout.alignment: Qt.AlignRight | Qt.AlignTop
-			Layout.preferredHeight: 16
-			width: 16
-		}
-
-		Text {
+		Label {
 			Layout.alignment: Qt.AlignRight | Qt.AlignTop
 			text: model.timestamp.toLocaleTimeString("HH:mm")
 			color: inactiveColors.text
diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 5612b04cef04d1dbf2ecd382ca83b27bc223e6c0..5b051235fb15984766dcdcb96b1556d89b6aac13 100644
--- a/resources/qml/TimelineView.qml
+++ b/resources/qml/TimelineView.qml
@@ -9,12 +9,14 @@ import im.nheko 1.0
 
 import "./delegates"
 
-Item {
+Page {
 	property var colors: currentActivePalette
 	property var systemInactive: SystemPalette { colorGroup: SystemPalette.Disabled }
 	property var inactiveColors: currentInactivePalette ? currentInactivePalette : systemInactive
 	property int avatarSize: 40
 
+	palette: colors
+
 	Settings {
 		id: settings
 		category: "user"
@@ -29,7 +31,6 @@ Item {
 
 	Menu {
 		id: messageContextMenu
-		palette: colors
 		modal: true
 
 		function show(eventId_, eventType_, showAt) {
@@ -73,12 +74,11 @@ Item {
 		anchors.fill: parent
 		color: colors.window
 
-		Text {
+		Label {
 			visible: !timelineManager.timeline && !timelineManager.isInitialSync
 			anchors.centerIn: parent
 			text: qsTr("No room open")
 			font.pointSize: 24
-			color: colors.windowText
 		}
 
 		BusyIndicator {
@@ -206,14 +206,14 @@ Item {
 						anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
 						visible: section.includes(" ")
 						text: chat.model.formatDateSeparator(modelData.timestamp)
-						color: colors.windowText
+						color: colors.brightText
 
 						height: contentHeight * 1.2
 						width: contentWidth * 1.2
 						horizontalAlignment: Text.AlignHCenter
 						background: Rectangle {
 							radius: parent.height / 2
-							color: colors.base
+							color: colors.dark
 						}
 					}
 					Row {
@@ -233,7 +233,7 @@ Item {
 							}
 						}
 
-						Text { 
+						Label { 
 							id: userName
 							text: chat.model.escapeEmoji(modelData.userName)
 							color: timelineManager.userColor(modelData.userId, colors.window)
@@ -268,7 +268,7 @@ Item {
 				anchors.left: parent.left
 				anchors.right: parent.right
 
-				Text {
+				Label {
 					id: typingDisplay
 					anchors.left: parent.left
 					anchors.right: parent.right
@@ -277,7 +277,6 @@ Item {
 
 					text: chat.model ? chat.model.formatTypingUsers(chat.model.typingUsers, colors.window) : ""
 					textFormat: Text.RichText
-					color: colors.windowText
 				}
 
 				Rectangle {
diff --git a/resources/qml/delegates/FileMessage.qml b/resources/qml/delegates/FileMessage.qml
index 2fe0a490e736650df57b8703cd812da869fc52f9..9a5300bbe97a51b758567df2d6bcbe2a80dfc4fa 100644
--- a/resources/qml/delegates/FileMessage.qml
+++ b/resources/qml/delegates/FileMessage.qml
@@ -3,7 +3,7 @@ import QtQuick.Layouts 1.2
 
 Rectangle {
 	radius: 10
-	color: colors.base
+	color: colors.dark
 	height: row.height + 24
 	width: parent ? parent.width : undefined
 
diff --git a/resources/qml/delegates/NoticeMessage.qml b/resources/qml/delegates/NoticeMessage.qml
index 12664fb5fc1f61f39d53a3762a8f9d10b3080888..62ada6d1cf4d75c87061908f6c026d9498a2c293 100644
--- a/resources/qml/delegates/NoticeMessage.qml
+++ b/resources/qml/delegates/NoticeMessage.qml
@@ -1,4 +1,4 @@
 TextMessage {
 	font.italic: true
-	color: inactiveColors.text
+	color: colors.buttonText
 }
diff --git a/resources/qml/delegates/Pill.qml b/resources/qml/delegates/Pill.qml
index b19d9a5415d6be13cb2cc322975f8a3f9d4b5c50..27985b586c287ff600cd7026d81e0f3e9e25e777 100644
--- a/resources/qml/delegates/Pill.qml
+++ b/resources/qml/delegates/Pill.qml
@@ -2,13 +2,13 @@ import QtQuick 2.5
 import QtQuick.Controls 2.1
 
 Label {
-	color: inactiveColors.text
+	color: colors.brightText
 	horizontalAlignment: Text.AlignHCenter
 
 	height: contentHeight * 1.2
 	width: contentWidth * 1.2
 	background: Rectangle {
 		radius: parent.height / 2
-		color: colors.base
+		color: colors.dark
 	}
 }
diff --git a/resources/qml/delegates/PlayableMediaMessage.qml b/resources/qml/delegates/PlayableMediaMessage.qml
index a409686408786707c03ef4b943b9fe10382fb600..20177a0486ec4f434a30cdb992cfbb964168afff 100644
--- a/resources/qml/delegates/PlayableMediaMessage.qml
+++ b/resources/qml/delegates/PlayableMediaMessage.qml
@@ -8,7 +8,7 @@ import im.nheko 1.0
 Rectangle {
 	id: bg
 	radius: 10
-	color: colors.base
+	color: colors.dark
 	height: content.height + 24
 	width: parent ? parent.width : undefined
 
diff --git a/resources/qtquickcontrols2.conf b/resources/qtquickcontrols2.conf
new file mode 100644
index 0000000000000000000000000000000000000000..d64f816e4a43938997c7d1c2f27f2227ba66937a
--- /dev/null
+++ b/resources/qtquickcontrols2.conf
@@ -0,0 +1,2 @@
+[Controls]
+FallbackStyle=Fusion
diff --git a/resources/res.qrc b/resources/res.qrc
index 7080fdd688ec063aa6135a5490fa8d6b069404a4..c94f0f1909d6ff63e674b786267f25025a2a3aef 100644
--- a/resources/res.qrc
+++ b/resources/res.qrc
@@ -109,6 +109,8 @@
         <file>styles/nheko-dark.qss</file>
     </qresource>
     <qresource prefix="/">
+        <file>qtquickcontrols2.conf</file>
+
         <file>qml/TimelineView.qml</file>
         <file>qml/Avatar.qml</file>
         <file>qml/ImageButton.qml</file>
diff --git a/resources/styles/nheko-dark.qss b/resources/styles/nheko-dark.qss
index c0d91f991ef57e883f4106f825d7508843c8fe74..875a38289d89fd8fb39658bb25ae64ba4a62fce8 100644
--- a/resources/styles/nheko-dark.qss
+++ b/resources/styles/nheko-dark.qss
@@ -31,7 +31,6 @@ UserMentionsWidget > * {
 }
 
 QLineEdit,
-QListWidget,
 WelcomePage,
 LoginPage,
 RegisterPage,
@@ -160,7 +159,7 @@ CommunitiesListItem {
     qproperty-backgroundColor: #2d3139;
 
     qproperty-avatarBgColor: #202228;
-    qproperty-avatarFgColor: white;
+    qproperty-avatarFgColor: palette(window);
 }
 
 LoadingIndicator {
@@ -177,14 +176,6 @@ UserInfoWidget {
     border-bottom: 1px solid #202228;
 }
 
-#UserSettingScrollWidget > QComboBox {
-    color: #202228;
-}
-
-#UserSettingScrollWidget > QComboBox {
-    color: #202228;
-}
-
 Avatar {
     qproperty-textColor: white;
     qproperty-backgroundColor: #2d3139;
@@ -246,6 +237,11 @@ Toggle {
     qproperty-trackColor: rgb(240, 240, 240);
 }
 
+QListWidget {
+    color: #caccd1;
+    background-color: #202228;
+}
+
 SnackBar {
     qproperty-textColor: #caccd1;
     qproperty-bgColor: #202228;
diff --git a/resources/styles/nheko.qss b/resources/styles/nheko.qss
index 960809de1b5f39d9eb3b4a9de2c9c4afeec14d06..51e5d64e7ab7883e1c607cc766a91399a69570fe 100644
--- a/resources/styles/nheko.qss
+++ b/resources/styles/nheko.qss
@@ -183,6 +183,8 @@ TopSection {
 
 WelcomePage,
 LoginPage,
+QComboBox,
+QPushButton,
 RegisterPage {
     background-color: white;
     color: #333;
@@ -221,6 +223,14 @@ TextField {
     qproperty-labelColor: #333;
 }
 
+QListWidget,
+TextInputWidget,
+QTextEdit,
+QLineEdit {
+    background-color: white;
+    color: #333;
+}
+
 TextInputWidget {
     border: none;
     border-top: 1px solid #dcdcdc;
diff --git a/resources/styles/system.qss b/resources/styles/system.qss
index 3ae3147a7922b0ed09119617afbea13a379cb477..dd2a90efa95685044f619879fa3b522f3a84903e 100644
--- a/resources/styles/system.qss
+++ b/resources/styles/system.qss
@@ -70,7 +70,7 @@ FileItem {
 }
 
 RaisedButton {
-    qproperty-foregroundColor: palette(buttonText);
+    qproperty-foregroundColor: palette(button-text);
 }
 
 TextField {
@@ -95,18 +95,18 @@ UserMentionsWidget {
     qproperty-titleColor: palette(text);
     qproperty-subtitleColor: palette(text);
 
-    qproperty-highlightedTitleColor: palette(highlightedtext);
-    qproperty-highlightedSubtitleColor: palette(highlightedtext);
+    qproperty-highlightedTitleColor: palette(highlighted-text);
+    qproperty-highlightedSubtitleColor: palette(highlighted-text);
 
     qproperty-hoverTitleColor: palette(highlightedtext);
     qproperty-hoverSubtitleColor: palette(highlightedtext);
 
-    qproperty-btnColor: palette(button);
-    qproperty-btnTextColor: palette(buttonText);
+    qproperty-btnColor: palette(dark);
+    qproperty-btnTextColor: palette(bright-text);
 
     qproperty-timestampColor: palette(text);
-    qproperty-highlightedTimestampColor: palette(highlightedtext);
-    qproperty-hoverTimestampColor: palette(highlightedtext);
+    qproperty-highlightedTimestampColor: palette(highlighted-text);
+    qproperty-hoverTimestampColor: palette(highlighted-text);
 
     qproperty-bubbleBgColor: palette(base);
     qproperty-bubbleFgColor: palette(text);
diff --git a/src/Logging.cpp b/src/Logging.cpp
index 5d64a630dc95839526c46adef94488abd7246128..b63c2e5ab1defb7772bb4c39f951b1407e7fc218 100644
--- a/src/Logging.cpp
+++ b/src/Logging.cpp
@@ -25,11 +25,18 @@ qmlMessageHandler(QtMsgType type, const QMessageLogContext &context, const QStri
         const char *file     = context.file ? context.file : "";
         const char *function = context.function ? context.function : "";
 
-        // Surpress binding wrning for now, as we can't set restore mode to keep compat with qt 5.10
-        if (msg.endsWith(
-              "QML Binding: Not restoring previous value because restoreMode has not been set.This "
-              "behavior is deprecated.In Qt < 6.0 the default is Binding.RestoreBinding.In Qt >= "
-              "6.0 the default is Binding.RestoreBindingOrValue."))
+        if (
+          // Surpress binding wrning for now, as we can't set restore mode to keep compat with
+          // qt 5.10
+          msg.endsWith(
+            "QML Binding: Not restoring previous value because restoreMode has not been set.This "
+            "behavior is deprecated.In Qt < 6.0 the default is Binding.RestoreBinding.In Qt >= "
+            "6.0 the default is Binding.RestoreBindingOrValue.") ||
+          // The default style has the point size set. If you use pixel size anywhere, you get
+          // that warning, which is useless, since sometimes you need the pixel size to match the
+          // text to the size of the outer element for example. This is done in the avatar and
+          // without that you get one warning for every Avatar displayed, which is stupid!
+          msg.endsWith("Both point size and pixel size set. Using pixel size."))
                 return;
 
         switch (type) {
diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp
index 6cd9a95cf641a6103b0091ff5c3a752bce5a234f..3afff83b032cb721b3a2cbd4a0d6726a7db332a5 100644
--- a/src/UserSettingsPage.cpp
+++ b/src/UserSettingsPage.cpp
@@ -103,12 +103,46 @@ UserSettings::applyTheme()
 {
         QFile stylefile;
 
-        if (theme() == "light") {
+        static QPalette original;
+        if (this->theme() == "light") {
                 stylefile.setFileName(":/styles/styles/nheko.qss");
-        } else if (theme() == "dark") {
+                QPalette lightActive(
+                  /*windowText*/ QColor("#333"),
+                  /*button*/ QColor("#333"),
+                  /*light*/ QColor(0xef, 0xef, 0xef),
+                  /*dark*/ QColor(220, 220, 220),
+                  /*mid*/ QColor(0, 0xff, 0), // not used anywhere, this is for debugging
+                  /*text*/ QColor("#333"),
+                  /*bright_text*/ QColor("#333"),
+                  /*base*/ QColor("white"),
+                  /*window*/ QColor("white"));
+                lightActive.setColor(QPalette::Highlight, QColor("#38a3d8"));
+                lightActive.setColor(QPalette::ToolTipBase, lightActive.base().color());
+                lightActive.setColor(QPalette::ToolTipText, lightActive.text().color());
+                lightActive.setColor(QPalette::Link, QColor("#0077b5"));
+                lightActive.setColor(QPalette::ButtonText, QColor("gray"));
+                QApplication::setPalette(lightActive);
+        } else if (this->theme() == "dark") {
                 stylefile.setFileName(":/styles/styles/nheko-dark.qss");
+                QPalette darkActive(
+                  /*windowText*/ QColor("#caccd1"),
+                  /*button*/ QColor(0xff, 0xff, 0xff),
+                  /*light*/ QColor("#caccd1"),
+                  /*dark*/ QColor("#2d3139"),
+                  /*mid*/ QColor(0, 0xff, 0), // not used anywhere, this is for debugging
+                  /*text*/ QColor("#caccd1"),
+                  /*bright_text*/ QColor(0xff, 0xff, 0xff),
+                  /*base*/ QColor("#2d3139"),
+                  /*window*/ QColor("#202228"));
+                darkActive.setColor(QPalette::Highlight, QColor("#38a3d8"));
+                darkActive.setColor(QPalette::ToolTipBase, darkActive.base().color());
+                darkActive.setColor(QPalette::ToolTipText, darkActive.text().color());
+                darkActive.setColor(QPalette::Link, QColor("#38a3d8"));
+                darkActive.setColor(QPalette::ButtonText, QColor(77, 77, 77));
+                QApplication::setPalette(darkActive);
         } else {
                 stylefile.setFileName(":/styles/styles/system.qss");
+                QApplication::setPalette(original);
         }
 
         stylefile.open(QFile::ReadOnly);
diff --git a/src/dialogs/UserProfile.cpp b/src/dialogs/UserProfile.cpp
index f1dd77dfe7d448a339808cfa90e58d47b411ed97..3415b127dbde9afcc9b504d5793afcf2da579c93 100644
--- a/src/dialogs/UserProfile.cpp
+++ b/src/dialogs/UserProfile.cpp
@@ -142,8 +142,6 @@ UserProfile::UserProfile(QWidget *parent)
         devices_->setSelectionMode(QAbstractItemView::NoSelection);
         devices_->setAttribute(Qt::WA_MacShowFocusRect, 0);
         devices_->setSpacing(DEVICE_SPACING);
-        devices_->setMinimumHeight(devices_->sizeHint().height() * 1.2);
-        devices_->hide();
 
         QFont descriptionLabelFont;
         descriptionLabelFont.setWeight(65);
@@ -151,6 +149,7 @@ UserProfile::UserProfile(QWidget *parent)
         devicesLabel_ = new QLabel(tr("Devices").toUpper(), this);
         devicesLabel_->setFont(descriptionLabelFont);
         devicesLabel_->hide();
+        devicesLabel_->setFixedSize(devicesLabel_->sizeHint());
 
         auto okBtn = new QPushButton("OK", this);
 
@@ -160,29 +159,24 @@ UserProfile::UserProfile(QWidget *parent)
         closeLayout->addWidget(okBtn);
 
         auto vlayout = new QVBoxLayout{this};
-        vlayout->addWidget(avatar_);
+        vlayout->addWidget(avatar_, 0, Qt::AlignCenter | Qt::AlignTop);
         vlayout->addLayout(textLayout);
         vlayout->addLayout(btnLayout);
-        vlayout->addWidget(devicesLabel_, Qt::AlignLeft);
-        vlayout->addWidget(devices_);
+        vlayout->addWidget(devicesLabel_, 0, Qt::AlignLeft);
+        vlayout->addWidget(devices_, 1);
         vlayout->addLayout(closeLayout);
-        vlayout->addStretch(1);
-
-        vlayout->setAlignment(avatar_, Qt::AlignCenter | Qt::AlignTop);
-        vlayout->setAlignment(userIdLabel_, Qt::AlignCenter | Qt::AlignTop);
 
         QFont largeFont;
         largeFont.setPointSizeF(largeFont.pointSizeF() * 1.5);
 
         setMinimumWidth(
           std::max(devices_->sizeHint().width() + 4 * WIDGET_MARGIN, conf::window::minModalWidth));
-        setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
+        setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
 
         vlayout->setSpacing(WIDGET_SPACING);
         vlayout->setContentsMargins(WIDGET_MARGIN, TOP_WIDGET_MARGIN, WIDGET_MARGIN, WIDGET_MARGIN);
 
-        static auto ignored = qRegisterMetaType<std::vector<DeviceInfo>>();
-        (void)ignored;
+        qRegisterMetaType<std::vector<DeviceInfo>>();
 
         auto closeShortcut = new QShortcut(QKeySequence(QKeySequence::Cancel), this);
         connect(closeShortcut, &QShortcut::activated, this, &UserProfile::close);
@@ -307,4 +301,5 @@ UserProfile::updateDeviceList(const QString &user_id, const std::vector<DeviceIn
 
         devicesLabel_->show();
         devices_->show();
+        adjustSize();
 }
diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index eead46a23b02b3a1de3f7a173e6a517b3d42bc83..794c13aa3b437b9029abd08a9709b2fbac5af413 100644
--- a/src/timeline/TimelineViewManager.cpp
+++ b/src/timeline/TimelineViewManager.cpp
@@ -22,36 +22,11 @@ TimelineViewManager::updateColorPalette()
         userColors.clear();
 
         if (settings->theme() == "light") {
-                QPalette lightActive(/*windowText*/ QColor("#333"),
-                                     /*button*/ QColor("#333"),
-                                     /*light*/ QColor(),
-                                     /*dark*/ QColor(220, 220, 220),
-                                     /*mid*/ QColor(),
-                                     /*text*/ QColor("#333"),
-                                     /*bright_text*/ QColor(),
-                                     /*base*/ QColor(220, 220, 220),
-                                     /*window*/ QColor("white"));
-                lightActive.setColor(QPalette::ToolTipBase, lightActive.base().color());
-                lightActive.setColor(QPalette::ToolTipText, lightActive.text().color());
-                lightActive.setColor(QPalette::Link, QColor("#0077b5"));
-                view->rootContext()->setContextProperty("currentActivePalette", lightActive);
-                view->rootContext()->setContextProperty("currentInactivePalette", lightActive);
+                view->rootContext()->setContextProperty("currentActivePalette", QPalette());
+                view->rootContext()->setContextProperty("currentInactivePalette", QPalette());
         } else if (settings->theme() == "dark") {
-                QPalette darkActive(/*windowText*/ QColor("#caccd1"),
-                                    /*button*/ QColor("#caccd1"),
-                                    /*light*/ QColor(),
-                                    /*dark*/ QColor("#2d3139"),
-                                    /*mid*/ QColor(),
-                                    /*text*/ QColor("#caccd1"),
-                                    /*bright_text*/ QColor(),
-                                    /*base*/ QColor("#2d3139"),
-                                    /*window*/ QColor("#202228"));
-                darkActive.setColor(QPalette::Highlight, QColor("#e7e7e9"));
-                darkActive.setColor(QPalette::ToolTipBase, darkActive.base().color());
-                darkActive.setColor(QPalette::ToolTipText, darkActive.text().color());
-                darkActive.setColor(QPalette::Link, QColor("#38a3d8"));
-                view->rootContext()->setContextProperty("currentActivePalette", darkActive);
-                view->rootContext()->setContextProperty("currentInactivePalette", darkActive);
+                view->rootContext()->setContextProperty("currentActivePalette", QPalette());
+                view->rootContext()->setContextProperty("currentInactivePalette", QPalette());
         } else {
                 view->rootContext()->setContextProperty("currentActivePalette", QPalette());
                 view->rootContext()->setContextProperty("currentInactivePalette", nullptr);