diff --git a/Telegram/Resources/art/bg.jpg b/Telegram/Resources/art/bg.jpg
index f9ee1054a..7fa05b3ed 100644
Binary files a/Telegram/Resources/art/bg.jpg and b/Telegram/Resources/art/bg.jpg differ
diff --git a/Telegram/Resources/art/bg_old.png b/Telegram/Resources/art/bg_initial.png
similarity index 100%
rename from Telegram/Resources/art/bg_old.png
rename to Telegram/Resources/art/bg_initial.png
diff --git a/Telegram/Resources/basic.style b/Telegram/Resources/basic.style
index 8992a0b5a..0e8d43032 100644
--- a/Telegram/Resources/basic.style
+++ b/Telegram/Resources/basic.style
@@ -103,7 +103,7 @@ boxLabel: flatLabel(labelDefFlat) {
 defaultLeftOutlineButton: OutlineButton {
 	outlineWidth: 3px;
 	outlineFg: windowBg;
-	outlineFgOver: windowActiveFill;
+	outlineFgOver: windowActiveBg;
 
 	textBg: windowBg;
 	textBgOver: #f2f7fa;
@@ -180,7 +180,7 @@ defaultCheckbox: Checkbox {
 	checkBg: #ffffff;
 	checkFg: #b3b3b3;
 	checkFgOver: #b3b3b3;
-	checkFgActive: windowActiveFill;
+	checkFgActive: windowActiveBg;
 
 	width: -44px;
 	height: 22px;
@@ -188,7 +188,7 @@ defaultCheckbox: Checkbox {
 	textPosition: point(32px, 2px);
 	diameter: 22px;
 	thickness: 2px;
-	checkIcon: icon {{ "default_checkbox_check", #ffffff, point(4px, 7px) }};
+	checkIcon: icon {{ "default_checkbox_check", windowActiveFg, point(4px, 7px) }};
 
 	font: normalFont;
 	duration: 120;
@@ -655,7 +655,7 @@ msgFileThumbLinkOutFgSelected: #31a298;
 msgFileNameTop: 16px;
 msgFileStatusTop: 37px;
 msgFileMinWidth: 294px;
-msgFileInBg: windowActiveFill;
+msgFileInBg: windowActiveBg;
 msgFileInBgOver: #4eade3;
 msgFileInBgSelected: #51a3d3;
 msgFileOutBg: #78c67f;
@@ -671,7 +671,7 @@ msgWaveformBar: 2px;
 msgWaveformSkip: 1px;
 msgWaveformMin: 2px;
 msgWaveformMax: 20px;
-msgWaveformInActive: windowActiveFill;
+msgWaveformInActive: windowActiveBg;
 msgWaveformInActiveSelected: #51a3d3;
 msgWaveformInInactive: #d4dee6;
 msgWaveformInInactiveSelected: #9cc1e1;
diff --git a/Telegram/Resources/colors.palette b/Telegram/Resources/colors.palette
index d7fc7245a..ac980b21e 100644
--- a/Telegram/Resources/colors.palette
+++ b/Telegram/Resources/colors.palette
@@ -23,19 +23,20 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 windowBg: #ffffff; // white: fallback for background
 windowTextFg: #000000; // black: fallback for text color
 windowSubTextFg: #999999; // gray: fallback for subtext color
-windowActiveFill: #40ace3; // bright blue: fallback for blue filled active areas
+windowActiveBg: #40ace3; // bright blue: fallback for blue filled active areas
+windowActiveFg: #ffffff; // text on bright blue: fallback for text on active areas
 windowOverBg: #f0f0f0; // light gray: fallback for over background
 windowSubTextFgOver: #7c99b2; // gray over light blue: fallback for subtext over color
-windowActiveTextFg: #1485c2; // online blue: fallback for active color
+windowActiveTextFg: #2687bf; // online blue: fallback for active color
 windowShadowFg: #000000; // black: fallback for shadow color
 
 imageBg: #000000;
 imageBgTransparent: #ffffff;
 
 // widgets
-activeButtonBg: windowActiveFill;
+activeButtonBg: windowActiveBg;
 activeButtonBgOver: #46b4eb;
-activeButtonFg: #ffffff;
+activeButtonFg: windowActiveFg;
 activeButtonFgOver: activeButtonFg;
 activeButtonSecondaryFg: #cceeff;
 activeButtonSecondaryFgOver: activeButtonSecondaryFg;
@@ -45,7 +46,8 @@ lightButtonBgOver: #edf7ff;
 lightButtonFg: #2b99d5;
 lightButtonFgOver: lightButtonFg;
 
-menuIconFg: windowSubTextFg;
+menuIconFg: #a8a8a8;
+menuIconFgOver: #999999;
 
 // custom title bar for Windows
 titleBg: windowOverBg;
@@ -95,7 +97,7 @@ settingsCloseFgOver: cancelIconFgOver;
 
 notificationsBoxMonitorFg: windowTextFg;
 
-notificationSampleUserpicFg: windowActiveFill;
+notificationSampleUserpicFg: windowActiveBg;
 notificationSampleCloseFg: #d7d7d7 | windowSubTextFg;
 notificationSampleTextFg: #d7d7d7 | windowSubTextFg;
 notificationSampleNameFg: #939393 | windowSubTextFg;
@@ -106,6 +108,7 @@ introErrorFg: windowTextFg;
 
 // dialogs
 dialogsMenuIconFg: menuIconFg;
+dialogsMenuIconFgOver: menuIconFgOver;
 
 dialogsBg: windowBg;
 dialogsNameFg: #373737;
@@ -118,7 +121,7 @@ dialogsVerifiedIconBg: #4abcf1;
 dialogsVerifiedIconFg: #ffffff;
 dialogsSendingIconFg: #c1c1c1;
 dialogsSentIconFg: #5dc452;
-dialogsUnreadBg: windowActiveFill;
+dialogsUnreadBg: windowActiveBg;
 dialogsUnreadBgMuted: #bbbbbb;
 dialogsUnreadFg: #ffffff;
 
@@ -137,22 +140,23 @@ dialogsUnreadBgOver: dialogsUnreadBg;
 dialogsUnreadBgMutedOver: dialogsUnreadBgMuted;
 dialogsUnreadFgOver: dialogsUnreadFg;
 
-dialogsBgActive: dialogsBgOver;
-dialogsNameFgActive: dialogsNameFgOver;
+dialogsBgActive: #419fd9;
+dialogsNameFgActive: windowActiveFg;
 dialogsChatIconFgActive: dialogsNameFgActive;
-dialogsDateFgActive: dialogsDateFgOver;
-dialogsTextFgActive: dialogsTextFgOver;
-dialogsTextFgServiceActive: dialogsTextFgServiceOver;
-dialogsDraftFgActive: dialogsDraftFgOver;
-dialogsVerifiedIconBgActive: dialogsVerifiedIconBgOver;
-dialogsVerifiedIconFgActive: dialogsVerifiedIconFgOver;
-dialogsSendingIconFgActive: dialogsSendingIconFgOver;
-dialogsSentIconFgActive: dialogsSentIconFgOver;
-dialogsUnreadBgActive: dialogsUnreadBgOver;
-dialogsUnreadBgMutedActive: dialogsUnreadBgMutedOver;
-dialogsUnreadFgActive: dialogsUnreadFgOver;
+dialogsDateFgActive: windowActiveFg;
+dialogsTextFgActive: windowActiveFg;
+dialogsTextFgServiceActive: dialogsTextFgActive;
+dialogsDraftFgActive: #c6e1f7;
+dialogsVerifiedIconBgActive: dialogsTextFgActive;
+dialogsVerifiedIconFgActive: dialogsBgActive;
+dialogsSendingIconFgActive: #ffffff99;
+dialogsSentIconFgActive: dialogsTextFgActive;
+dialogsUnreadBgActive: dialogsTextFgActive;
+dialogsUnreadBgMutedActive: #d3e2ee;
+dialogsUnreadFgActive: dialogsBgActive;
 
-dialogsForwardFg: #ffffff;
+dialogsForwardBg: dialogsBgActive;
+dialogsForwardFg: dialogsNameFgActive;
 
 // history
 topBarBg: windowBg;
@@ -163,8 +167,8 @@ emojiPanHeaderFg: #999999 | windowSubTextFg;
 emojiPanHeaderBg: #fffffff2 | emojiPanBg;
 
 historyComposeAreaBg: windowBg;
-historyComposeIconFg: #cccccc;
-historyComposeIconFgOver: #bebebe;
+historyComposeIconFg: menuIconFg;
+historyComposeIconFgOver: menuIconFgOver;
 historyPinnedBg: historyComposeAreaBg;
 historyReplyBg: historyComposeAreaBg;
 historyReplyCancelIconFg: cancelIconFg;
@@ -172,7 +176,6 @@ historyReplyCancelIconFgOver: cancelIconFgOver;
 
 historySendBg: historyComposeAreaBg;
 historySendBgOver: #f5f5f5 | historySendBg;
-historyMenuItemBgOver: historySendBgOver;
 
 historyTextInFg: windowTextFg;
 historyTextOutFg: windowTextFg;
diff --git a/Telegram/Resources/icons/dialogs_lock@2x.png b/Telegram/Resources/icons/dialogs_lock@2x.png
index 74689cf49..d8f8bfd74 100644
Binary files a/Telegram/Resources/icons/dialogs_lock@2x.png and b/Telegram/Resources/icons/dialogs_lock@2x.png differ
diff --git a/Telegram/Resources/icons/dialogs_unlock@2x.png b/Telegram/Resources/icons/dialogs_unlock@2x.png
index 04b3ef9e6..a6c7bbd2f 100644
Binary files a/Telegram/Resources/icons/dialogs_unlock@2x.png and b/Telegram/Resources/icons/dialogs_unlock@2x.png differ
diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings
index 6ca0bc71d..00ce0a17c 100644
--- a/Telegram/Resources/langs/lang.strings
+++ b/Telegram/Resources/langs/lang.strings
@@ -473,8 +473,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 "lng_profile_no_media" = "No media in this conversation.";
 "lng_profile_photos" = "{count:_not_used_|# photo|# photos}";
 "lng_profile_photos_header" = "Photos overview";
-"lng_profile_videos" = "{count:_not_used_|# video file|# video files}";
-"lng_profile_videos_header" = "Video files overview";
+"lng_profile_videos" = "{count:_not_used_|# video|# videos}";
+"lng_profile_videos_header" = "Videos overview";
 "lng_profile_songs" = "{count:_not_used_|# audio file|# audio files}";
 "lng_profile_songs_header" = "Audio files overview";
 "lng_profile_files" = "{count:_not_used_|# file|# files}";
@@ -582,7 +582,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 "lng_action_pinned_message" = "{from} pinned «{text}»";
 "lng_action_pinned_media" = "{from} pinned {media}";
 "lng_action_pinned_media_photo" = "a photo";
-"lng_action_pinned_media_video" = "a video file";
+"lng_action_pinned_media_video" = "a video";
 "lng_action_pinned_media_audio" = "an audio file";
 "lng_action_pinned_media_voice" = "a voice message";
 "lng_action_pinned_media_file" = "a file";
@@ -666,7 +666,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 
 "lng_media_type" = "Media type";
 "lng_media_type_photos" = "Photos";
-"lng_media_type_videos" = "Video files";
+"lng_media_type_videos" = "Videos";
 "lng_media_type_songs" = "Audio files";
 "lng_media_type_files" = "Files";
 "lng_media_type_audios" = "Voice messages";
@@ -675,7 +675,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 "lng_media_open_with" = "Open With";
 "lng_media_download" = "Download";
 "lng_media_cancel" = "Cancel";
-"lng_media_video" = "Video file";
+"lng_media_video" = "Video";
 "lng_media_audio" = "Voice message";
 
 "lng_media_auto_settings" = "Automatic media download settings";
@@ -730,7 +730,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 "lng_stickers_masks_pack" = "This is a pack of mask stickers. You can use them in the photo editor on our mobile apps.";
 
 "lng_in_dlg_photo" = "Photo";
-"lng_in_dlg_video" = "Video file";
+"lng_in_dlg_video" = "Video";
 "lng_in_dlg_audio_file" = "Audio file";
 "lng_in_dlg_contact" = "Contact";
 "lng_in_dlg_audio" = "Voice message";
@@ -825,7 +825,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 
 "lng_maps_point" = "Location";
 "lng_save_photo" = "Save image";
-"lng_save_video" = "Save video file";
+"lng_save_video" = "Save video";
 "lng_save_audio_file" = "Save audio file";
 "lng_save_audio" = "Save voice message";
 "lng_save_file" = "Save file";
@@ -853,7 +853,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 "lng_context_cancel_download" = "Cancel Download";
 "lng_context_show_in_folder" = "Show in Folder";
 "lng_context_show_in_finder" = "Show in Finder";
-"lng_context_save_video" = "Save Video File As...";
+"lng_context_save_video" = "Save Video As...";
 "lng_context_save_audio_file" = "Save Audio File As...";
 "lng_context_save_audio" = "Save Voice Message As...";
 "lng_context_pack_info" = "Pack Info";
diff --git a/Telegram/Resources/sample.tdesktop-theme b/Telegram/Resources/sample.tdesktop-theme
index 6a55e0c44..128f748a8 100644
--- a/Telegram/Resources/sample.tdesktop-theme
+++ b/Telegram/Resources/sample.tdesktop-theme
@@ -24,16 +24,17 @@
 windowBg: #ffffff;
 windowTextFg: #000000;
 windowSubTextFg: #999999;
-windowActiveFill: #40ace3;
+windowActiveBg: #40ace3;
+windowActiveFg: #ffffff;
 windowOverBg: #f0f0f0;
 windowSubTextFgOver: #7c99b2;
-windowActiveTextFg: #1485c2;
+windowActiveTextFg: #2687bf;
 windowShadowFg: #000000;
 imageBg: #000000;
 imageBgTransparent: #ffffff;
-activeButtonBg: windowActiveFill;
+activeButtonBg: windowActiveBg;
 activeButtonBgOver: #46b4eb;
-activeButtonFg: #ffffff;
+activeButtonFg: windowActiveFg;
 activeButtonFgOver: activeButtonFg;
 activeButtonSecondaryFg: #cceeff;
 activeButtonSecondaryFgOver: activeButtonSecondaryFg;
@@ -41,7 +42,8 @@ lightButtonBg: windowBg;
 lightButtonBgOver: #edf7ff;
 lightButtonFg: #2b99d5;
 lightButtonFgOver: lightButtonFg;
-menuIconFg: windowSubTextFg;
+menuIconFg: #a8a8a8;
+menuIconFgOver: #999999;
 titleBg: windowOverBg;
 titleShadow: #00000003;
 titleButtonFg: #ababab;
@@ -75,13 +77,14 @@ settingsFixedBarBg: boxBg;
 settingsCloseFg: cancelIconFg;
 settingsCloseFgOver: cancelIconFgOver;
 notificationsBoxMonitorFg: windowTextFg;
-notificationSampleUserpicFg: windowActiveFill;
+notificationSampleUserpicFg: windowActiveBg;
 notificationSampleCloseFg: #d7d7d7; // windowSubTextFg;
 notificationSampleTextFg: #d7d7d7; // windowSubTextFg;
 notificationSampleNameFg: #939393; // windowSubTextFg;
 introHeaderFg: windowTextFg;
 introErrorFg: windowTextFg;
 dialogsMenuIconFg: menuIconFg;
+dialogsMenuIconFgOver: menuIconFgOver;
 dialogsBg: windowBg;
 dialogsNameFg: #373737;
 dialogsChatIconFg: dialogsNameFg;
@@ -93,7 +96,7 @@ dialogsVerifiedIconBg: #4abcf1;
 dialogsVerifiedIconFg: #ffffff;
 dialogsSendingIconFg: #c1c1c1;
 dialogsSentIconFg: #5dc452;
-dialogsUnreadBg: windowActiveFill;
+dialogsUnreadBg: windowActiveBg;
 dialogsUnreadBgMuted: #bbbbbb;
 dialogsUnreadFg: #ffffff;
 dialogsBgOver: windowOverBg;
@@ -110,36 +113,36 @@ dialogsSentIconFgOver: dialogsSentIconFg;
 dialogsUnreadBgOver: dialogsUnreadBg;
 dialogsUnreadBgMutedOver: dialogsUnreadBgMuted;
 dialogsUnreadFgOver: dialogsUnreadFg;
-dialogsBgActive: dialogsBgOver;
-dialogsNameFgActive: dialogsNameFgOver;
+dialogsBgActive: #419fd9;
+dialogsNameFgActive: windowActiveFg;
 dialogsChatIconFgActive: dialogsNameFgActive;
-dialogsDateFgActive: dialogsDateFgOver;
-dialogsTextFgActive: dialogsTextFgOver;
-dialogsTextFgServiceActive: dialogsTextFgServiceOver;
-dialogsDraftFgActive: dialogsDraftFgOver;
-dialogsVerifiedIconBgActive: dialogsVerifiedIconBgOver;
-dialogsVerifiedIconFgActive: dialogsVerifiedIconFgOver;
-dialogsSendingIconFgActive: dialogsSendingIconFgOver;
-dialogsSentIconFgActive: dialogsSentIconFgOver;
-dialogsUnreadBgActive: dialogsUnreadBgOver;
-dialogsUnreadBgMutedActive: dialogsUnreadBgMutedOver;
-dialogsUnreadFgActive: dialogsUnreadFgOver;
-dialogsForwardFg: #ffffff;
+dialogsDateFgActive: windowActiveFg;
+dialogsTextFgActive: windowActiveFg;
+dialogsTextFgServiceActive: dialogsTextFgActive;
+dialogsDraftFgActive: #c6e1f7;
+dialogsVerifiedIconBgActive: dialogsTextFgActive;
+dialogsVerifiedIconFgActive: dialogsBgActive;
+dialogsSendingIconFgActive: #ffffff99;
+dialogsSentIconFgActive: dialogsTextFgActive;
+dialogsUnreadBgActive: dialogsTextFgActive;
+dialogsUnreadBgMutedActive: #d3e2ee;
+dialogsUnreadFgActive: dialogsBgActive;
+dialogsForwardBg: dialogsBgActive;
+dialogsForwardFg: dialogsNameFgActive;
 topBarBg: windowBg;
 emojiPanBg: windowBg;
 emojiPanCategories: #f7f7f7; // windowBg;
 emojiPanHeaderFg: windowSubTextFg;
 emojiPanHeaderBg: #fffffff2; // emojiPanBg;
 historyComposeAreaBg: windowBg;
-historyComposeIconFg: #cccccc;
-historyComposeIconFgOver: #bebebe;
+historyComposeIconFg: menuIconFg;
+historyComposeIconFgOver: menuIconFgOver;
 historyPinnedBg: historyComposeAreaBg;
 historyReplyBg: historyComposeAreaBg;
 historyReplyCancelIconFg: cancelIconFg;
 historyReplyCancelIconFgOver: cancelIconFgOver;
 historySendBg: historyComposeAreaBg;
 historySendBgOver: #f5f5f5; // historySendBg;
-historyMenuItemBgOver: historySendBgOver;
 historyTextInFg: windowTextFg;
 historyTextOutFg: windowTextFg;
 historyCaptionInFg: historyTextInFg;
diff --git a/Telegram/Resources/telegram.qrc b/Telegram/Resources/telegram.qrc
index 53c94d871..1ab21fca9 100644
--- a/Telegram/Resources/telegram.qrc
+++ b/Telegram/Resources/telegram.qrc
@@ -5,7 +5,7 @@
     <file>art/fonts/OpenSans-Semibold.ttf</file>
     <file>art/newmsg.wav</file>
     <file>art/bg.jpg</file>
-    <file>art/bg_old.png</file>
+    <file>art/bg_initial.png</file>
     <file>art/icon256.png</file>
     <file>art/iconbig256.png</file>
   </qresource>
diff --git a/Telegram/SourceFiles/_other/packer.cpp b/Telegram/SourceFiles/_other/packer.cpp
index 8203e2019..48e0a8b05 100644
--- a/Telegram/SourceFiles/_other/packer.cpp
+++ b/Telegram/SourceFiles/_other/packer.cpp
@@ -56,79 +56,83 @@ QString countBetaVersionSignature(quint64 version);
 typedef unsigned char uchar;
 typedef unsigned int uint32;
 typedef signed int int32;
+
 namespace{
-    inline uint32 sha1Shift(uint32 v, uint32 shift) {
-        return ((v << shift) | (v >> (32 - shift)));
-    }
-    void sha1PartHash(uint32 *sha, uint32 *temp)
-    {
-        uint32 a = sha[0], b = sha[1], c = sha[2], d = sha[3], e = sha[4], round = 0;
 
-        #define _shiftswap(f, v) { \
-            uint32 t = sha1Shift(a, 5) + (f) + e + v + temp[round]; \
-			e = d; \
-			d = c; \
-			c = sha1Shift(b, 30); \
-			b = a; \
-			a = t; \
-            ++round; \
-		}
-		#define _shiftshiftswap(f, v) { \
-            temp[round] = sha1Shift((temp[round - 3] ^ temp[round - 8] ^ temp[round - 14] ^ temp[round - 16]), 1); \
-			_shiftswap(f, v) \
-		}
-
-        while (round < 16) _shiftswap((b & c) | (~b & d), 0x5a827999)
-        while (round < 20) _shiftshiftswap((b & c) | (~b & d), 0x5a827999)
-        while (round < 40) _shiftshiftswap(b ^ c ^ d, 0x6ed9eba1)
-        while (round < 60) _shiftshiftswap((b & c) | (b & d) | (c & d), 0x8f1bbcdc)
-        while (round < 80) _shiftshiftswap(b ^ c ^ d, 0xca62c1d6)
-
-        #undef _shiftshiftswap
-        #undef _shiftswap
-
-        sha[0] += a;
-        sha[1] += b;
-        sha[2] += c;
-        sha[3] += d;
-        sha[4] += e;
-    }
+inline uint32 sha1Shift(uint32 v, uint32 shift) {
+	return ((v << shift) | (v >> (32 - shift)));
 }
 
+void sha1PartHash(uint32 *sha, uint32 *temp) {
+	uint32 a = sha[0], b = sha[1], c = sha[2], d = sha[3], e = sha[4], round = 0;
+
+#define _shiftswap(f, v) { \
+		uint32 t = sha1Shift(a, 5) + (f) + e + v + temp[round]; \
+		e = d; \
+		d = c; \
+		c = sha1Shift(b, 30); \
+		b = a; \
+		a = t; \
+		++round; \
+	}
+
+#define _shiftshiftswap(f, v) { \
+		temp[round] = sha1Shift((temp[round - 3] ^ temp[round - 8] ^ temp[round - 14] ^ temp[round - 16]), 1); \
+		_shiftswap(f, v) \
+	}
+
+	while (round < 16) _shiftswap((b & c) | (~b & d), 0x5a827999)
+	while (round < 20) _shiftshiftswap((b & c) | (~b & d), 0x5a827999)
+	while (round < 40) _shiftshiftswap(b ^ c ^ d, 0x6ed9eba1)
+	while (round < 60) _shiftshiftswap((b & c) | (b & d) | (c & d), 0x8f1bbcdc)
+	while (round < 80) _shiftshiftswap(b ^ c ^ d, 0xca62c1d6)
+
+#undef _shiftshiftswap
+#undef _shiftswap
+
+	sha[0] += a;
+	sha[1] += b;
+	sha[2] += c;
+	sha[3] += d;
+	sha[4] += e;
+}
+
+} // namespace
+
 int32 *hashSha1(const void *data, uint32 len, void *dest) {
 	const uchar *buf = (const uchar *)data;
 
-    uint32 temp[80], block = 0, end;
-    uint32 sha[5] = {0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0};
-    for (end = block + 64; block + 64 <= len; end = block + 64) {
-        for (uint32 i = 0; block < end; block += 4) {
-            temp[i++] = (uint32) buf[block + 3]
-                    | (((uint32) buf[block + 2]) << 8)
-                    | (((uint32) buf[block + 1]) << 16)
-                    | (((uint32) buf[block]) << 24);
-        }
-        sha1PartHash(sha, temp);
-    }
+	uint32 temp[80], block = 0, end;
+	uint32 sha[5] = {0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0};
+	for (end = block + 64; block + 64 <= len; end = block + 64) {
+		for (uint32 i = 0; block < end; block += 4) {
+			temp[i++] = (uint32) buf[block + 3]
+			        | (((uint32) buf[block + 2]) << 8)
+			        | (((uint32) buf[block + 1]) << 16)
+			        | (((uint32) buf[block]) << 24);
+		}
+		sha1PartHash(sha, temp);
+	}
 
-    end = len - block;
+	end = len - block;
 	memset(temp, 0, sizeof(uint32) * 16);
-    uint32 last = 0;
-    for (; last < end; ++last) {
-        temp[last >> 2] |= (uint32)buf[last + block] << ((3 - (last & 0x03)) << 3);
-    }
-    temp[last >> 2] |= 0x80 << ((3 - (last & 3)) << 3);
-    if (end >= 56) {
-        sha1PartHash(sha, temp);
+	uint32 last = 0;
+	for (; last < end; ++last) {
+		temp[last >> 2] |= (uint32)buf[last + block] << ((3 - (last & 0x03)) << 3);
+	}
+	temp[last >> 2] |= 0x80 << ((3 - (last & 3)) << 3);
+	if (end >= 56) {
+		sha1PartHash(sha, temp);
 		memset(temp, 0, sizeof(uint32) * 16);
-    }
-    temp[15] = len << 3;
-    sha1PartHash(sha, temp);
+	}
+	temp[15] = len << 3;
+	sha1PartHash(sha, temp);
 
 	uchar *sha1To = (uchar*)dest;
 
-    for (int32 i = 19; i >= 0; --i) {
-        sha1To[i] = (sha[i >> 2] >> (((3 - i) & 0x03) << 3)) & 0xFF;
-    }
+	for (int32 i = 19; i >= 0; --i) {
+		sha1To[i] = (sha[i >> 2] >> (((3 - i) & 0x03) << 3)) & 0xFF;
+	}
 
 	return (int32*)sha1To;
 }
diff --git a/Telegram/SourceFiles/_other/updater.cpp b/Telegram/SourceFiles/_other/updater.cpp
index f70e65ca8..ef9f4a624 100644
--- a/Telegram/SourceFiles/_other/updater.cpp
+++ b/Telegram/SourceFiles/_other/updater.cpp
@@ -468,13 +468,13 @@ static const WCHAR *_exeName = L"Updater.exe";
 LPTOP_LEVEL_EXCEPTION_FILTER _oldWndExceptionFilter = 0;
 
 typedef BOOL (FAR STDAPICALLTYPE *t_miniDumpWriteDump)(
-    _In_ HANDLE hProcess,
-    _In_ DWORD ProcessId,
-    _In_ HANDLE hFile,
-    _In_ MINIDUMP_TYPE DumpType,
-    _In_opt_ PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
-    _In_opt_ PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
-    _In_opt_ PMINIDUMP_CALLBACK_INFORMATION CallbackParam
+	_In_ HANDLE hProcess,
+	_In_ DWORD ProcessId,
+	_In_ HANDLE hFile,
+	_In_ MINIDUMP_TYPE DumpType,
+	_In_opt_ PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
+	_In_opt_ PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
+	_In_opt_ PMINIDUMP_CALLBACK_INFORMATION CallbackParam
 );
 t_miniDumpWriteDump miniDumpWriteDump = 0;
 
@@ -483,7 +483,7 @@ HANDLE _generateDumpFileAtPath(const WCHAR *path) {
 
 	WCHAR szPath[maxFileLen];
 	wsprintf(szPath, L"%stdata\\", path);
-    if (!CreateDirectory(szPath, NULL)) {
+	if (!CreateDirectory(szPath, NULL)) {
 		if (GetLastError() != ERROR_ALREADY_EXISTS) {
 			return 0;
 		}
@@ -495,7 +495,7 @@ HANDLE _generateDumpFileAtPath(const WCHAR *path) {
 		}
 	}
 
-    WCHAR szFileName[maxFileLen];
+	WCHAR szFileName[maxFileLen];
 	WCHAR szExeName[maxFileLen];
 
 	wcscpy_s(szExeName, _exeName);
@@ -504,16 +504,16 @@ HANDLE _generateDumpFileAtPath(const WCHAR *path) {
 		wsprintf(dotFrom, L"");
 	}
 
-    SYSTEMTIME stLocalTime;
+	SYSTEMTIME stLocalTime;
 
-    GetLocalTime(&stLocalTime);
+	GetLocalTime(&stLocalTime);
 
-    wsprintf(szFileName, L"%s%s-%s-%04d%02d%02d-%02d%02d%02d-%ld-%ld.dmp",
-             szPath, szExeName, updaterVersionStr,
-             stLocalTime.wYear, stLocalTime.wMonth, stLocalTime.wDay,
-             stLocalTime.wHour, stLocalTime.wMinute, stLocalTime.wSecond,
-             GetCurrentProcessId(), GetCurrentThreadId());
-    return CreateFile(szFileName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);
+	wsprintf(szFileName, L"%s%s-%s-%04d%02d%02d-%02d%02d%02d-%ld-%ld.dmp",
+	         szPath, szExeName, updaterVersionStr,
+	         stLocalTime.wYear, stLocalTime.wMonth, stLocalTime.wDay,
+	         stLocalTime.wHour, stLocalTime.wMinute, stLocalTime.wSecond,
+	         GetCurrentProcessId(), GetCurrentThreadId());
+	return CreateFile(szFileName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);
 }
 
 void _generateDump(EXCEPTION_POINTERS* pExceptionPointers) {
@@ -553,16 +553,16 @@ void _generateDump(EXCEPTION_POINTERS* pExceptionPointers) {
 	}
 
 	MINIDUMP_EXCEPTION_INFORMATION ExpParam = {0};
-    ExpParam.ThreadId = GetCurrentThreadId();
-    ExpParam.ExceptionPointers = pExceptionPointers;
-    ExpParam.ClientPointers = TRUE;
+	ExpParam.ThreadId = GetCurrentThreadId();
+	ExpParam.ExceptionPointers = pExceptionPointers;
+	ExpParam.ClientPointers = TRUE;
 
-    miniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpWithDataSegs, &ExpParam, NULL, NULL);
+	miniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpWithDataSegs, &ExpParam, NULL, NULL);
 }
 
 LONG CALLBACK _exceptionFilter(EXCEPTION_POINTERS* pExceptionPointers) {
 	_generateDump(pExceptionPointers);
-    return _oldWndExceptionFilter ? (*_oldWndExceptionFilter)(pExceptionPointers) : EXCEPTION_CONTINUE_SEARCH;
+	return _oldWndExceptionFilter ? (*_oldWndExceptionFilter)(pExceptionPointers) : EXCEPTION_CONTINUE_SEARCH;
 }
 
 // see http://www.codeproject.com/Articles/154686/SetUnhandledExceptionFilter-and-the-C-C-Runtime-Li
diff --git a/Telegram/SourceFiles/boxes/backgroundbox.cpp b/Telegram/SourceFiles/boxes/backgroundbox.cpp
index a31418997..70e1e1b0d 100644
--- a/Telegram/SourceFiles/boxes/backgroundbox.cpp
+++ b/Telegram/SourceFiles/boxes/backgroundbox.cpp
@@ -73,15 +73,14 @@ BackgroundBox::Inner::Inner(QWidget *parent) : TWidget(parent)
 void BackgroundBox::Inner::gotWallpapers(const MTPVector<MTPWallPaper> &result) {
 	App::WallPapers wallpapers;
 
-	auto oldBackground = ImagePtr(qsl(":/gui/art/bg_old.png"));
-	wallpapers.push_back(App::WallPaper(Window::Theme::kOldBackground, oldBackground, oldBackground));
-	const auto &v(result.c_vector().v);
-	for (int i = 0, l = v.size(); i < l; ++i) {
-		const auto &w(v.at(i));
+	auto oldBackground = ImagePtr(qsl(":/gui/art/bg_initial.png"));
+	wallpapers.push_back(App::WallPaper(Window::Theme::kInitialBackground, oldBackground, oldBackground));
+	auto &v = result.c_vector().v;
+	for_const (auto &w, v) {
 		switch (w.type()) {
 		case mtpc_wallPaper: {
-			const auto &d(w.c_wallPaper());
-			const auto &sizes(d.vsizes.c_vector().v);
+			auto &d = w.c_wallPaper();
+			auto &sizes = d.vsizes.c_vector().v;
 			const MTPPhotoSize *thumb = 0, *full = 0;
 			int32 thumbLevel = -1, fullLevel = -1;
 			for (QVector<MTPPhotoSize>::const_iterator j = sizes.cbegin(), e = sizes.cend(); j != e; ++j) {
@@ -89,14 +88,14 @@ void BackgroundBox::Inner::gotWallpapers(const MTPVector<MTPWallPaper> &result)
 				int32 w = 0, h = 0;
 				switch (j->type()) {
 				case mtpc_photoSize: {
-					const auto &s(j->c_photoSize().vtype.c_string().v);
+					auto &s = j->c_photoSize().vtype.c_string().v;
 					if (s.size()) size = s[0];
 					w = j->c_photoSize().vw.v;
 					h = j->c_photoSize().vh.v;
 				} break;
 
 				case mtpc_photoCachedSize: {
-					const auto &s(j->c_photoCachedSize().vtype.c_string().v);
+					auto &s = j->c_photoCachedSize().vtype.c_string().v;
 					if (s.size()) size = s[0];
 					w = j->c_photoCachedSize().vw.v;
 					h = j->c_photoCachedSize().vh.v;
@@ -120,7 +119,7 @@ void BackgroundBox::Inner::gotWallpapers(const MTPVector<MTPWallPaper> &result)
 		} break;
 
 		case mtpc_wallPaperSolid: {
-			const auto &d(w.c_wallPaperSolid());
+			auto &d = w.c_wallPaperSolid();
 		} break;
 		}
 	}
diff --git a/Telegram/SourceFiles/boxes/boxes.style b/Telegram/SourceFiles/boxes/boxes.style
index ff7d14d7b..293dc5ed8 100644
--- a/Telegram/SourceFiles/boxes/boxes.style
+++ b/Telegram/SourceFiles/boxes/boxes.style
@@ -166,13 +166,13 @@ contactsPhotoCheckbox: RoundImageCheckbox {
 	imageRadius: 21px;
 	imageSmallRadius: 18px;
 	selectWidth: 2px;
-	selectFg: windowActiveFill;
+	selectFg: windowActiveBg;
 	selectDuration: 150;
 	checkBorder: windowBg;
-	checkBg: windowActiveFill;
+	checkBg: windowActiveBg;
 	checkRadius: 10px;
 	checkSmallRadius: 3px;
-	checkIcon: icon {{ "default_checkbox_check", windowBg, point(3px, 6px) }};
+	checkIcon: icon {{ "default_checkbox_check", windowActiveFg, point(3px, 6px) }};
 }
 contactsPhotoDisabledCheckFg: #bbbbbb;
 contactsNameCheckedFg: #2b88b8;
diff --git a/Telegram/SourceFiles/boxes/contactsbox.cpp b/Telegram/SourceFiles/boxes/contactsbox.cpp
index 3f056af98..704741cae 100644
--- a/Telegram/SourceFiles/boxes/contactsbox.cpp
+++ b/Telegram/SourceFiles/boxes/contactsbox.cpp
@@ -356,7 +356,7 @@ void ContactsBox::onFilterUpdate(const QString &filter) {
 void ContactsBox::addPeerToMultiSelect(PeerData *peer, bool skipAnimation) {
 	using AddItemWay = Ui::MultiSelect::AddItemWay;
 	auto addItemWay = skipAnimation ? AddItemWay::SkipAnimation : AddItemWay::Default;
-	_select->entity()->addItem(peer->id, peer->shortName(), st::windowActiveFill, PaintUserpicCallback(peer), addItemWay);
+	_select->entity()->addItem(peer->id, peer->shortName(), st::activeButtonBg, PaintUserpicCallback(peer), addItemWay);
 }
 
 void ContactsBox::onPeerSelectedChanged(PeerData *peer, bool checked) {
diff --git a/Telegram/SourceFiles/boxes/sharebox.cpp b/Telegram/SourceFiles/boxes/sharebox.cpp
index 16a20cca7..9365d8b11 100644
--- a/Telegram/SourceFiles/boxes/sharebox.cpp
+++ b/Telegram/SourceFiles/boxes/sharebox.cpp
@@ -236,7 +236,7 @@ void ShareBox::onFilterUpdate(const QString &query) {
 void ShareBox::addPeerToMultiSelect(PeerData *peer, bool skipAnimation) {
 	using AddItemWay = Ui::MultiSelect::AddItemWay;
 	auto addItemWay = skipAnimation ? AddItemWay::SkipAnimation : AddItemWay::Default;
-	_select->addItem(peer->id, peer->shortName(), st::windowActiveFill, PaintUserpicCallback(peer), addItemWay);
+	_select->addItem(peer->id, peer->shortName(), st::activeButtonBg, PaintUserpicCallback(peer), addItemWay);
 }
 
 void ShareBox::onPeerSelectedChanged(PeerData *peer, bool checked) {
diff --git a/Telegram/SourceFiles/dialogs/dialogs.style b/Telegram/SourceFiles/dialogs/dialogs.style
index 4d5ea7338..437c2c747 100644
--- a/Telegram/SourceFiles/dialogs/dialogs.style
+++ b/Telegram/SourceFiles/dialogs/dialogs.style
@@ -81,13 +81,16 @@ dialogsMenuToggle: IconButton {
 	height: 32px;
 
 	icon: icon {{ "dialogs_menu", dialogsMenuIconFg }};
+	iconOver: icon {{ "dialogs_menu", dialogsMenuIconFgOver }};
 	iconPosition: point(6px, 6px);
 	iconPositionDown: point(6px, 6px);
 }
 dialogsLock: IconButton(dialogsMenuToggle) {
 	icon: icon {{ "dialogs_lock", dialogsMenuIconFg }};
+	iconOver: icon {{ "dialogs_lock", dialogsMenuIconFgOver }};
 }
 dialogsUnlockIcon: icon {{ "dialogs_unlock", dialogsMenuIconFg }};
+dialogsUnlockIconOver: icon {{ "dialogs_unlock", dialogsMenuIconFgOver }};
 
 dialogsFilter: flatInput(inpDefGray) {
 	font: font(fsize);
@@ -114,10 +117,15 @@ dialogsMenu: DropdownMenu(defaultDropdownMenu) {
 }
 dialogsMenuPosition: point(-3px, -2px);
 dialogsMenuNewGroup: icon {{ "menu_new_group", menuIconFg }};
+dialogsMenuNewGroupOver: icon {{ "menu_new_group", menuIconFgOver }};
 dialogsMenuNewChannel: icon {{ "menu_new_channel", menuIconFg }};
+dialogsMenuNewChannelOver: icon {{ "menu_new_channel", menuIconFgOver }};
 dialogsMenuContacts: icon {{ "menu_contacts", menuIconFg }};
+dialogsMenuContactsOver: icon {{ "menu_contacts", menuIconFgOver }};
 dialogsMenuSettings: icon {{ "menu_settings", menuIconFg }};
+dialogsMenuSettingsOver: icon {{ "menu_settings", menuIconFgOver }};
 dialogsMenuHelp: icon {{ "menu_help", menuIconFg }};
+dialogsMenuHelpOver: icon {{ "menu_help", menuIconFgOver }};
 
 dialogsChatTypeSkip: 22px;
 dialogsChatIcon: icon {{ "dialogs_chat", dialogsChatIconFg, point(1px, 4px) }};
@@ -191,4 +199,3 @@ dialogsForwardCancel: IconButton {
 	iconPositionDown: point(12px, 11px);
 }
 dialogsForwardFont: semiboldFont;
-dialogsForwardBg: windowActiveFill;
diff --git a/Telegram/SourceFiles/dialogswidget.cpp b/Telegram/SourceFiles/dialogswidget.cpp
index 93679c934..cf6a0a662 100644
--- a/Telegram/SourceFiles/dialogswidget.cpp
+++ b/Telegram/SourceFiles/dialogswidget.cpp
@@ -1701,7 +1701,7 @@ DialogsWidget::DialogsWidget(QWidget *parent) : TWidget(parent)
 	_lockUnlock->setVisible(Global::LocalPasscode());
 	subscribe(Global::RefLocalPasscodeChanged(), [this] { updateLockUnlockVisibility(); });
 	_lockUnlock->setClickedCallback([this] {
-		_lockUnlock->setIcon(&st::dialogsUnlockIcon);
+		_lockUnlock->setIcon(&st::dialogsUnlockIcon, &st::dialogsUnlockIconOver);
 		App::wnd()->setupPasscode();
 		_lockUnlock->setIcon(nullptr);
 	});
@@ -2016,19 +2016,19 @@ void DialogsWidget::showMainMenu() {
 		_mainMenu.create(this, st::dialogsMenu);
 		_mainMenu->addAction(lang(lng_create_group_title), [] {
 			App::wnd()->onShowNewGroup();
-		}, &st::dialogsMenuNewGroup);
+		}, &st::dialogsMenuNewGroup, &st::dialogsMenuNewGroupOver);
 		_mainMenu->addAction(lang(lng_create_channel_title), [] {
 			App::wnd()->onShowNewChannel();
-		}, &st::dialogsMenuNewChannel);
+		}, &st::dialogsMenuNewChannel, &st::dialogsMenuNewChannelOver);
 		_mainMenu->addAction(lang(lng_menu_contacts), [] {
 			Ui::showLayer(new ContactsBox());
-		}, &st::dialogsMenuContacts);
+		}, &st::dialogsMenuContacts, &st::dialogsMenuContactsOver);
 		_mainMenu->addAction(lang(lng_menu_settings), [] {
 			App::wnd()->showSettings();
-		}, &st::dialogsMenuSettings);
+		}, &st::dialogsMenuSettings, &st::dialogsMenuSettingsOver);
 		_mainMenu->addAction(lang(lng_settings_faq), [] {
 			QDesktopServices::openUrl(telegramFaqLink());
-		}, &st::dialogsMenuHelp);
+		}, &st::dialogsMenuHelp, &st::dialogsMenuHelpOver);
 	}
 	updateMainMenuGeometry();
 	_mainMenu->showAnimated();
diff --git a/Telegram/SourceFiles/history/history.style b/Telegram/SourceFiles/history/history.style
index 6f21d0d5a..d373a3282 100644
--- a/Telegram/SourceFiles/history/history.style
+++ b/Telegram/SourceFiles/history/history.style
@@ -157,32 +157,19 @@ historyComposeField: flatTextarea {
 historyComposeFieldMaxHeight: 224px;
 // historyMinHeight: 56px;
 
-historyMediaTypeFile: icon {{ "media_type_file", historyComposeIconFg, point(2px, 2px) }};
-historyMediaTypeFileOver: icon {{ "media_type_file", historyComposeIconFgOver, point(2px, 2px) }};
-historyMediaTypePhoto: icon {{ "media_type_photo", historyComposeIconFg, point(2px, 2px) }};
-historyMediaTypePhotoOver: icon {{ "media_type_photo", historyComposeIconFgOver, point(2px, 2px) }};
-historyMediaTypeVideo: icon {{ "media_type_video", historyComposeIconFg, point(2px, 2px) }};
-historyMediaTypeVideoOver: icon {{ "media_type_video", historyComposeIconFgOver, point(2px, 2px) }};
-historyMediaTypeSong: icon {{ "media_type_song", historyComposeIconFg, point(0px, 0px) }};
-historyMediaTypeSongOver: icon {{ "media_type_song", historyComposeIconFgOver, point(0px, 0px) }};
-historyMediaTypeVoice: icon {{ "media_type_voice", historyComposeIconFg, point(2px, 2px) }};
-historyMediaTypeVoiceOver: icon {{ "media_type_voice", historyComposeIconFgOver, point(2px, 2px) }};
-historyMediaTypeLink: icon {{ "media_type_link", historyComposeIconFg, point(2px, 2px) }};
-historyMediaTypeLinkOver: icon {{ "media_type_link", historyComposeIconFgOver, point(2px, 2px) }};
-
 historyAttachDocument: IconButton {
 	width: 46px;
 	height: 46px;
 
-	icon: historyMediaTypeFile;
-	iconOver: historyMediaTypeFileOver;
+	icon: icon {{ "media_type_file", historyComposeIconFg, point(2px, 2px) }};
+	iconOver: icon {{ "media_type_file", historyComposeIconFgOver, point(2px, 2px) }};
 
 	iconPosition: point(9px, 9px);
 	iconPositionDown: point(9px, 10px);
 }
 historyAttachPhoto: IconButton(historyAttachDocument) {
-	icon: historyMediaTypePhoto;
-	iconOver: historyMediaTypePhotoOver;
+	icon: icon {{ "media_type_photo", historyComposeIconFg, point(2px, 2px) }};
+	iconOver: icon {{ "media_type_photo", historyComposeIconFgOver, point(2px, 2px) }};
 }
 historyAttachEmoji: IconButton(historyAttachDocument) {
 	width: 33px;
@@ -233,11 +220,23 @@ historyRecordFont: font(13px);
 historyRecordDurationFg: #000000;
 historyRecordTextTop: 14px;
 
+historyMediaTypeFile: icon {{ "media_type_file", menuIconFg, point(2px, 2px) }};
+historyMediaTypeFileOver: icon {{ "media_type_file", menuIconFgOver, point(2px, 2px) }};
+historyMediaTypePhoto: icon {{ "media_type_photo", menuIconFg, point(2px, 2px) }};
+historyMediaTypePhotoOver: icon {{ "media_type_photo", menuIconFgOver, point(2px, 2px) }};
+historyMediaTypeVideo: icon {{ "media_type_video", menuIconFg, point(2px, 2px) }};
+historyMediaTypeVideoOver: icon {{ "media_type_video", menuIconFgOver, point(2px, 2px) }};
+historyMediaTypeSong: icon {{ "media_type_song", menuIconFg, point(0px, 0px) }};
+historyMediaTypeSongOver: icon {{ "media_type_song", menuIconFgOver, point(0px, 0px) }};
+historyMediaTypeVoice: icon {{ "media_type_voice", menuIconFg, point(2px, 2px) }};
+historyMediaTypeVoiceOver: icon {{ "media_type_voice", menuIconFgOver, point(2px, 2px) }};
+historyMediaTypeLink: icon {{ "media_type_link", menuIconFg, point(2px, 2px) }};
+historyMediaTypeLinkOver: icon {{ "media_type_link", menuIconFgOver, point(2px, 2px) }};
+
 historyAttachDropdownMenu: DropdownMenu(defaultDropdownMenu) {
 	menu: Menu(defaultMenu) {
 		skip: 5px;
 
-		itemBgOver: historyMenuItemBgOver;
 		itemIconPosition: point(12px, 6px);
 		itemPadding: margins(48px, 11px, 48px, 11px);
 	}
@@ -277,15 +276,15 @@ topBarSearch: IconButton {
 	width: 44px;
 	height: topBarHeight;
 
-	icon: icon {{ "title_search", #a8a8a8 }};
-	iconOver: icon {{ "title_search", #a3a3a3 }};
+	icon: icon {{ "title_search", menuIconFg }};
+	iconOver: icon {{ "title_search", menuIconFgOver }};
 
 	iconPosition: point(13px, 18px);
 	iconPositionDown: point(13px, 18px);
 }
 topBarMenuToggle: IconButton(topBarSearch) {
-	icon: icon {{ "title_menu_dots", #a8a8a8 }};
-	iconOver: icon {{ "title_menu_dots", #a3a3a3 }};
+	icon: icon {{ "title_menu_dots", menuIconFg }};
+	iconOver: icon {{ "title_menu_dots", menuIconFgOver }};
 
 	iconPosition: point(18px, 17px);
 	iconPositionDown: point(18px, 17px);
diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp
index 8a1d11b03..08159e603 100644
--- a/Telegram/SourceFiles/historywidget.cpp
+++ b/Telegram/SourceFiles/historywidget.cpp
@@ -5004,8 +5004,8 @@ void HistoryWidget::loadMessages() {
 		return firstLoadMessages();
 	}
 
-	bool loadMigrated = _migrated && (_history->isEmpty() || _history->loadedAtTop() || (!_migrated->isEmpty() && !_migrated->loadedAtBottom()));
-	History *from = loadMigrated ? _migrated : _history;
+	auto loadMigrated = _migrated && (_history->isEmpty() || _history->loadedAtTop() || (!_migrated->isEmpty() && !_migrated->loadedAtBottom()));
+	auto from = loadMigrated ? _migrated : _history;
 	if (from->loadedAtTop()) {
 		return;
 	}
diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp
index a4d188441..d56a65240 100644
--- a/Telegram/SourceFiles/localstorage.cpp
+++ b/Telegram/SourceFiles/localstorage.cpp
@@ -3630,8 +3630,7 @@ void writeBackground(int32 id, const QImage &img) {
 	}
 	quint32 size = sizeof(qint32) + sizeof(quint32) + (bmp.isEmpty() ? 0 : (sizeof(quint32) + bmp.size()));
 	EncryptedDescriptor data(size);
-	data.stream << qint32(id);
-	if (!bmp.isEmpty()) data.stream << bmp;
+	data.stream << qint32(id) << bmp;
 
 	FileWriteDescriptor file(_backgroundKey);
 	file.writeEncrypted(data);
@@ -3653,21 +3652,21 @@ bool readBackground() {
 
 	QByteArray pngData;
 	qint32 id;
-	bg.stream >> id;
-	if (id == Window::Theme::kOldBackground || id == Window::Theme::kDefaultBackground) {
+	bg.stream >> id >> pngData;
+	auto oldEmptyImage = (bg.stream.status() != QDataStream::Ok);
+	if (oldEmptyImage
+		|| id == Window::Theme::kInitialBackground
+		|| id == Window::Theme::kDefaultBackground) {
 		_backgroundCanWrite = false;
-		if (bg.version < 8005) {
+		if (oldEmptyImage || bg.version < 8005) {
 			Window::Theme::Background()->setImage(Window::Theme::kDefaultBackground);
-			if (id == Window::Theme::kOldBackground) {
-				Window::Theme::Background()->setTile(false);
-			}
+			Window::Theme::Background()->setTile(false);
 		} else {
 			Window::Theme::Background()->setImage(id);
 		}
 		_backgroundCanWrite = true;
 		return true;
 	}
-	bg.stream >> pngData;
 
 	QImage image;
 	QBuffer buf(&pngData);
diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp
index 72780f900..3f9ff7e99 100644
--- a/Telegram/SourceFiles/mainwidget.cpp
+++ b/Telegram/SourceFiles/mainwidget.cpp
@@ -1925,7 +1925,9 @@ void MainWidget::checkChatBackground() {
 		if (_background->full->loaded()) {
 			if (_background->full->isNull()) {
 				Window::Theme::Background()->setImage(Window::Theme::kDefaultBackground);
-			} else if (_background->id == Window::Theme::kOldBackground || _background->id == Window::Theme::kDefaultBackground) {
+			} else if (false
+				|| _background->id == Window::Theme::kInitialBackground
+				|| _background->id == Window::Theme::kDefaultBackground) {
 				Window::Theme::Background()->setImage(_background->id);
 			} else {
 				Window::Theme::Background()->setImage(_background->id, _background->full->pix().toImage());
diff --git a/Telegram/SourceFiles/mainwindow.cpp b/Telegram/SourceFiles/mainwindow.cpp
index da17f3560..e3dd2d5ee 100644
--- a/Telegram/SourceFiles/mainwindow.cpp
+++ b/Telegram/SourceFiles/mainwindow.cpp
@@ -159,8 +159,8 @@ void MainWindow::onStateChanged(Qt::WindowState state) {
 	savePosition(state);
 }
 
-void MainWindow::init() {
-	Platform::MainWindow::init();
+void MainWindow::initHook() {
+	Platform::MainWindow::initHook();
 
 	setWindowIcon(wndIcon);
 
@@ -198,6 +198,7 @@ void MainWindow::firstShow() {
 		trayIconMenu->addAction(lang(lng_quit_from_tray), this, SLOT(quitFromTray()))->setEnabled(true);
 	}
 	psUpdateWorkmode();
+
 	psFirstShow();
 	updateTrayMenu();
 
diff --git a/Telegram/SourceFiles/mainwindow.h b/Telegram/SourceFiles/mainwindow.h
index 0fd6813a8..a40ca68b4 100644
--- a/Telegram/SourceFiles/mainwindow.h
+++ b/Telegram/SourceFiles/mainwindow.h
@@ -77,7 +77,6 @@ public:
 	MainWindow();
 	~MainWindow();
 
-	void init();
 	void firstShow();
 
 	QWidget *filedialogParent();
@@ -168,6 +167,8 @@ protected:
 	void closeEvent(QCloseEvent *e) override;
 	void resizeEvent(QResizeEvent *e) override;
 
+	void initHook() override;
+
 public slots:
 	void updateIsActive(int timeout = 0);
 
diff --git a/Telegram/SourceFiles/platform/win/window_title_win.cpp b/Telegram/SourceFiles/platform/win/window_title_win.cpp
index a27c96f5d..32437e143 100644
--- a/Telegram/SourceFiles/platform/win/window_title_win.cpp
+++ b/Telegram/SourceFiles/platform/win/window_title_win.cpp
@@ -47,11 +47,12 @@ TitleWidget::TitleWidget(QWidget *parent) : Window::TitleWidget(parent)
 	});
 
 	setAttribute(Qt::WA_OpaquePaintEvent);
+}
+
+void TitleWidget::init() {
+	connect(window()->windowHandle(), SIGNAL(windowStateChanged(Qt::WindowState)), this, SLOT(onWindowStateChanged(Qt::WindowState)));
+	_maximized = (window()->windowState() & Qt::WindowMaximized);
 	updateMaximizeRestoreButton();
-
-	onWindowStateChanged();
-
-	connect(parent->window()->windowHandle(), SIGNAL(windowStateChanged(Qt::WindowState)), this, SLOT(onWindowStateChanged(Qt::WindowState)));
 }
 
 void TitleWidget::paintEvent(QPaintEvent *e) {
diff --git a/Telegram/SourceFiles/platform/win/window_title_win.h b/Telegram/SourceFiles/platform/win/window_title_win.h
index 49a4f11d2..cc7a0fa49 100644
--- a/Telegram/SourceFiles/platform/win/window_title_win.h
+++ b/Telegram/SourceFiles/platform/win/window_title_win.h
@@ -35,6 +35,8 @@ class TitleWidget : public Window::TitleWidget, private base::Subscriber {
 public:
 	TitleWidget(QWidget *parent);
 
+	void init() override;
+
 	Window::HitTestResult hitTest(const QPoint &p) const override;
 
 public slots:
diff --git a/Telegram/SourceFiles/profile/profile.style b/Telegram/SourceFiles/profile/profile.style
index 5c7ffca41..efc6ff1ed 100644
--- a/Telegram/SourceFiles/profile/profile.style
+++ b/Telegram/SourceFiles/profile/profile.style
@@ -60,11 +60,11 @@ profilePrimaryButton: defaultActiveButton;
 profileSecondaryButton: defaultLightButton;
 profileAddMemberButton: RoundButton(profileSecondaryButton) {
 	width: 62px;
-	icon: icon {{ "profile_add_member", windowActiveFill, point(20px, 10px) }};
+	icon: icon {{ "profile_add_member", lightButtonFg, point(20px, 10px) }};
 }
 
 profileDropAreaBg: profileBg;
-profileDropAreaFg: windowActiveFill;
+profileDropAreaFg: lightButtonFg;
 profileDropAreaPadding: margins(25px, 3px, 25px, 20px);
 profileDropAreaTitleFont: font(24px);
 profileDropAreaTitleTop: 30px;
diff --git a/Telegram/SourceFiles/stickers/emoji_pan.cpp b/Telegram/SourceFiles/stickers/emoji_pan.cpp
index 7b0873f00..4bb43c4d2 100644
--- a/Telegram/SourceFiles/stickers/emoji_pan.cpp
+++ b/Telegram/SourceFiles/stickers/emoji_pan.cpp
@@ -2135,7 +2135,7 @@ void StickerPanInner::updateSelected() {
 				t_assert(row >= 0 && row < _inlineRows.size() && col >= 0 && col < _inlineRows.at(row).items.size());
 				Ui::repaintInlineItem(_inlineRows.at(row).items.at(col));
 			}
-			if (_pressed >= 0 && _selected >= 0 && _pressed != _selected) {
+			if (_previewShown && _selected >= 0 && _pressed != _selected) {
 				_pressed = _selected;
 				if (row >= 0 && col >= 0) {
 					auto layout = _inlineRows.at(row).items.at(col);
@@ -2260,7 +2260,7 @@ void StickerPanInner::updateSelected() {
 		}
 	}
 	_selected = selIndex;
-	if (_pressed >= 0 && _selected >= 0 && _pressed != _selected) {
+	if (_previewShown && _selected >= 0 && _pressed != _selected) {
 		_pressed = _selected;
 		if (newSel >= 0 && xNewSel < 0) {
 			Ui::showMediaPreview(sets.at(newSelTab).pack.at(newSel % MatrixRowShift));
diff --git a/Telegram/SourceFiles/stickers/stickers.style b/Telegram/SourceFiles/stickers/stickers.style
index 91ba059a5..752abc675 100644
--- a/Telegram/SourceFiles/stickers/stickers.style
+++ b/Telegram/SourceFiles/stickers/stickers.style
@@ -56,7 +56,7 @@ stickersFeaturedUnreadBg: msgFileInBg;
 stickersFeaturedUnreadSize: 5px;
 stickersFeaturedUnreadSkip: 5px;
 stickersFeaturedUnreadTop: 7px;
-stickersFeaturedInstalled: icon {{ "mediaview_save_check", windowActiveFill }};
+stickersFeaturedInstalled: icon {{ "mediaview_save_check", lightButtonFg }};
 
 stickersMaxHeight: 440px;
 stickersPadding: margins(19px, 17px, 19px, 17px);
diff --git a/Telegram/SourceFiles/window/main_window.cpp b/Telegram/SourceFiles/window/main_window.cpp
index 2e0b1c931..a49e87450 100644
--- a/Telegram/SourceFiles/window/main_window.cpp
+++ b/Telegram/SourceFiles/window/main_window.cpp
@@ -28,10 +28,9 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
 
 namespace Window {
 
-MainWindow::MainWindow() : QMainWindow()
+MainWindow::MainWindow() : QWidget()
 , _positionUpdatedTimer(this)
 , _body(this) {
-	setCentralWidget(_body);
 	subscribe(Theme::Background(), [this](const Theme::BackgroundUpdate &data) {
 		using Type = Theme::BackgroundUpdate::Type;
 		if (data.type == Type::TestingTheme || data.type == Type::RevertingTheme || data.type == Type::ApplyingTheme) {
@@ -40,20 +39,21 @@ MainWindow::MainWindow() : QMainWindow()
 			}
 		}
 	});
+
+	_title = Platform::CreateTitleWidget(this);
 }
 
 void MainWindow::init() {
 	_positionUpdatedTimer->setSingleShot(true);
 	connect(_positionUpdatedTimer, SIGNAL(timeout()), this, SLOT(savePositionByTimer()));
 
-	_title = Platform::CreateTitleWidget(this);
-
 	auto p = palette();
 	p.setColor(QPalette::Window, st::windowBg->c);
 	setPalette(p);
 
-	initSize();
+	if (_title) _title->init();
 
+	initSize();
 	initHook();
 }
 
diff --git a/Telegram/SourceFiles/window/main_window.h b/Telegram/SourceFiles/window/main_window.h
index 319b52163..f1c0e8fc4 100644
--- a/Telegram/SourceFiles/window/main_window.h
+++ b/Telegram/SourceFiles/window/main_window.h
@@ -26,7 +26,7 @@ namespace Window {
 
 class TitleWidget;
 
-class MainWindow : public QMainWindow, protected base::Subscriber {
+class MainWindow : public QWidget, protected base::Subscriber {
 	Q_OBJECT
 
 public:
diff --git a/Telegram/SourceFiles/window/window.style b/Telegram/SourceFiles/window/window.style
index 0253aa14d..06a2cdfe0 100644
--- a/Telegram/SourceFiles/window/window.style
+++ b/Telegram/SourceFiles/window/window.style
@@ -76,7 +76,7 @@ notifySendReply: IconButton {
 	width: 36px;
 	height: 36px;
 
-	icon: icon {{ "notification_send", windowActiveFill, point(3px, 9px) }};
+	icon: icon {{ "notification_send", lightButtonFg, point(3px, 9px) }};
 	iconPosition: point(0px, 0px);
 	iconPositionDown: point(0px, 1px);
 }
diff --git a/Telegram/SourceFiles/window/window_theme.cpp b/Telegram/SourceFiles/window/window_theme.cpp
index 6a107cb8c..9865d38f1 100644
--- a/Telegram/SourceFiles/window/window_theme.cpp
+++ b/Telegram/SourceFiles/window/window_theme.cpp
@@ -440,18 +440,18 @@ void ChatBackground::setImage(int32 id, QImage &&image) {
 		}
 		setPreparedImage(std_::move(image));
 	} else {
-		if (_id == kDefaultBackground) {
-			image.load(qsl(":/gui/art/bg.jpg"));
-		} else if (_id == kOldBackground || image.isNull()) {
-			_id = kOldBackground;
-			image.load(qsl(":/gui/art/bg_old.png"));
+		if (_id == kInitialBackground) {
+			image.load(qsl(":/gui/art/bg_initial.png"));
 			if (cRetina()) {
 				image = image.scaledToWidth(image.width() * 2, Qt::SmoothTransformation);
 			} else if (cScale() != dbisOne) {
 				image = image.scaledToWidth(convertScale(image.width()), Qt::SmoothTransformation);
 			}
+		} else if (_id == kDefaultBackground || image.isNull()) {
+			_id = kDefaultBackground;
+			image.load(qsl(":/gui/art/bg.jpg"));
 		}
-		Local::writeBackground(_id, (_id == kDefaultBackground || _id == kOldBackground) ? QImage() : image);
+		Local::writeBackground(_id, (_id == kDefaultBackground || _id == kInitialBackground) ? QImage() : image);
 		setPreparedImage(prepareBackgroundImage(std_::move(image)));
 	}
 	t_assert(!_image.isNull());
diff --git a/Telegram/SourceFiles/window/window_theme.h b/Telegram/SourceFiles/window/window_theme.h
index 85c9d8b52..06b21e224 100644
--- a/Telegram/SourceFiles/window/window_theme.h
+++ b/Telegram/SourceFiles/window/window_theme.h
@@ -32,8 +32,8 @@ constexpr int32 kTestingDefaultBackground = -665;
 
 constexpr int32 kThemeBackground = -2;
 constexpr int32 kCustomBackground = -1;
-constexpr int32 kOldBackground = 0;
-constexpr int32 kDefaultBackground = 21;
+constexpr int32 kInitialBackground = 0;
+constexpr int32 kDefaultBackground = 105;
 
 struct Cached {
 	QByteArray colors;
diff --git a/Telegram/SourceFiles/window/window_title.h b/Telegram/SourceFiles/window/window_title.h
index 15dad581d..578812eb3 100644
--- a/Telegram/SourceFiles/window/window_title.h
+++ b/Telegram/SourceFiles/window/window_title.h
@@ -40,6 +40,9 @@ enum class HitTestResult {
 class TitleWidget : public TWidget {
 public:
 	using TWidget::TWidget;
+
+	virtual void init() {
+	}
 	virtual HitTestResult hitTest(const QPoint &p) const {
 		return HitTestResult::None;
 	}