diff --git a/Telegram/PrepareWin.bat b/Telegram/PrepareWin.bat
index fa71d7bac..f84a8dc9c 100644
--- a/Telegram/PrepareWin.bat
+++ b/Telegram/PrepareWin.bat
@@ -1,10 +1,10 @@
 @echo OFF
 
-set "AppVersion=8004"
-set "AppVersionStrSmall=0.8.4"
-set "AppVersionStr=0.8.4"
-set "AppVersionStrFull=0.8.4.0"
-set "DevChannel=0"
+set "AppVersion=8005"
+set "AppVersionStrSmall=0.8.5"
+set "AppVersionStr=0.8.5"
+set "AppVersionStrFull=0.8.5.0"
+set "DevChannel=1"
 
 if %DevChannel% neq 0 goto preparedev
 
diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt
index 9f34c5b78..55d135daf 100644
--- a/Telegram/Resources/style.txt
+++ b/Telegram/Resources/style.txt
@@ -831,7 +831,7 @@ msgLinkColor: #2a6dc2;
 msgPressedLinkColor: #004bad;
 msgSkip: 40px;
 msgPtr: 8px;
-msgBG: ':/gui/art/bg.png' / 2:':/gui/art/bg_125x.png' / 3:':/gui/art/bg_150x.png' / 4:':/gui/art/bg_200x.png';
+msgBG: ':/gui/art/bg.jpg';
 
 msgSendingRect: sprite(260px, 20px, 20px, 20px);
 msgCheckRect: sprite(320px, 0px, 20px, 20px);
diff --git a/Telegram/SourceFiles/art/bg.jpg b/Telegram/SourceFiles/art/bg.jpg
new file mode 100644
index 000000000..f9ee1054a
Binary files /dev/null and b/Telegram/SourceFiles/art/bg.jpg differ
diff --git a/Telegram/SourceFiles/art/bg.png b/Telegram/SourceFiles/art/bg.png
deleted file mode 100644
index 8c5073a61..000000000
Binary files a/Telegram/SourceFiles/art/bg.png and /dev/null differ
diff --git a/Telegram/SourceFiles/art/bg_125x.png b/Telegram/SourceFiles/art/bg_125x.png
deleted file mode 100644
index 697e360c3..000000000
Binary files a/Telegram/SourceFiles/art/bg_125x.png and /dev/null differ
diff --git a/Telegram/SourceFiles/art/bg_150x.png b/Telegram/SourceFiles/art/bg_150x.png
deleted file mode 100644
index 56d1fdcd4..000000000
Binary files a/Telegram/SourceFiles/art/bg_150x.png and /dev/null differ
diff --git a/Telegram/SourceFiles/art/bg_200x.png b/Telegram/SourceFiles/art/bg_200x.png
deleted file mode 100644
index bb77a20c3..000000000
Binary files a/Telegram/SourceFiles/art/bg_200x.png and /dev/null differ
diff --git a/Telegram/SourceFiles/boxes/backgroundbox.cpp b/Telegram/SourceFiles/boxes/backgroundbox.cpp
index 27700560b..082047d51 100644
--- a/Telegram/SourceFiles/boxes/backgroundbox.cpp
+++ b/Telegram/SourceFiles/boxes/backgroundbox.cpp
@@ -210,7 +210,7 @@ void BackgroundBox::onBackgroundChosen(int index) {
 	if (index >= 0 && index < App::cServerBackgrounds().size()) {
 		const App::WallPaper &paper(App::cServerBackgrounds().at(index));
 		if (App::main()) App::main()->setChatBackground(paper);
-		if (App::settings()) App::settings()->needBackgroundUpdate(!paper.id);
+		if (App::settings()) App::settings()->needBackgroundUpdate(false);
 	}
 	emit closed();
 }
diff --git a/Telegram/SourceFiles/config.h b/Telegram/SourceFiles/config.h
index 94c06777f..b538ece3e 100644
--- a/Telegram/SourceFiles/config.h
+++ b/Telegram/SourceFiles/config.h
@@ -17,9 +17,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
 */
 #pragma once
 
-static const int32 AppVersion = 8004;
-static const wchar_t *AppVersionStr = L"0.8.4";
-static const bool DevChannel = false;
+static const int32 AppVersion = 8005;
+static const wchar_t *AppVersionStr = L"0.8.5";
+static const bool DevChannel = true;
 
 static const wchar_t *AppNameOld = L"Telegram Win (Unofficial)";
 static const wchar_t *AppName = L"Telegram Desktop";
diff --git a/Telegram/SourceFiles/gui/text.cpp b/Telegram/SourceFiles/gui/text.cpp
index 8b26f7e5f..2082b3732 100644
--- a/Telegram/SourceFiles/gui/text.cpp
+++ b/Telegram/SourceFiles/gui/text.cpp
@@ -24,8 +24,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
 
 namespace {
 
-	const QRegularExpression _reDomain(QString::fromUtf8("(?<![A-Za-z\\$0-9А-Яа-яёЁ\\-\\_%=\\.])(?:([a-zA-Z]+)://)?((?:[A-Za-zА-яА-ЯёЁ0-9\\-\\_]+\\.){1,5}([A-Za-zрф\\-\\d]{2,22})(\\:\\d+)?)"));
-	const QRegularExpression _reExplicitDomain(QString::fromUtf8("(?<![A-Za-z\\$0-9А-Яа-яёЁ\\-\\_%=\\.])(?:([a-zA-Z]+)://)((?:[A-Za-zА-яА-ЯёЁ0-9\\-\\_]+\\.){0,5}([A-Za-zрф\\-\\d]{2,22})(\\:\\d+)?)"));
+	const QRegularExpression _reDomain(QString::fromUtf8("(?<![\\w\\$\\-\\_%=\\.])(?:([a-zA-Z]+)://)?((?:[A-Za-zА-яА-ЯёЁ0-9\\-\\_]+\\.){1,5}([A-Za-zрф\\-\\d]{2,22})(\\:\\d+)?)"), QRegularExpression::UseUnicodePropertiesOption);
+	const QRegularExpression _reExplicitDomain(QString::fromUtf8("(?<![\\w\\$\\-\\_%=\\.])(?:([a-zA-Z]+)://)((?:[A-Za-zА-яА-ЯёЁ0-9\\-\\_]+\\.){0,5}([A-Za-zрф\\-\\d]{2,22})(\\:\\d+)?)"), QRegularExpression::UseUnicodePropertiesOption);
 	const QRegularExpression _reMailName(qsl("[a-zA-Z\\-_\\.0-9]{1,256}$"));
 	const QRegularExpression _reMailStart(qsl("^[a-zA-Z\\-_\\.0-9]{1,256}\\@"));
 	const QRegularExpression _reHashtag(qsl("(^|[\\s\\.,:;<>|'\"\\[\\]\\{\\}`\\~\\!\\%\\^\\*\\(\\)\\-\\+=\\x10])#[\\w]{2,64}([\\W]|$)"), QRegularExpression::UseUnicodePropertiesOption);
diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp
index 43c7f6178..c5247c5a3 100644
--- a/Telegram/SourceFiles/localstorage.cpp
+++ b/Telegram/SourceFiles/localstorage.cpp
@@ -2225,7 +2225,8 @@ namespace Local {
 		QBuffer buf(&pngData);
 		QImageReader reader(&buf);
 		if (reader.read(&img)) {
-			App::initBackground(id, img, true);
+			if (!id) cSetTileBackground(false);
+			App::initBackground(id, id ? img : QImage(), true);
 			return true;
 		}
 		return false;
diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp
index 6cbd6eb39..3825496fe 100644
--- a/Telegram/SourceFiles/mainwidget.cpp
+++ b/Telegram/SourceFiles/mainwidget.cpp
@@ -2298,6 +2298,7 @@ void MainWidget::gotDifference(const MTPupdates_Difference &diff) {
 
 		updInited = true;
 
+		MTP_LOG(0, ("getDifference { good - after a slice of difference was received }"));
 		getDifference();
 	} break;
 	case mtpc_updates_difference: {
@@ -2339,18 +2340,18 @@ void MainWidget::clearSkippedPtsUpdates() {
 bool MainWidget::updPtsUpdated(int pts, int ptsCount) { // return false if need to save that update and apply later
 	if (!updInited || updSkipPtsUpdateLevel) return true;
 
-	updLastPts = qMax(updLastPts, pts);
-	updPtsCount += ptsCount;
-	if (updLastPts == updPtsCount) {
-		applySkippedPtsUpdates();
-		updGoodPts = updLastPts;
-		return true;
-	} else if (updLastPts < updPtsCount) {
-		_byPtsTimer.startIfNotActive(1);
-	} else {
-		_byPtsTimer.startIfNotActive(WaitForSkippedTimeout);
-	}
-	return !ptsCount;
+updLastPts = qMax(updLastPts, pts);
+updPtsCount += ptsCount;
+if (updLastPts == updPtsCount) {
+	applySkippedPtsUpdates();
+	updGoodPts = updLastPts;
+	return true;
+} else if (updLastPts < updPtsCount) {
+	_byPtsTimer.startIfNotActive(1);
+} else {
+	_byPtsTimer.startIfNotActive(WaitForSkippedTimeout);
+}
+return !ptsCount;
 }
 
 void MainWidget::feedDifference(const MTPVector<MTPUser> &users, const MTPVector<MTPChat> &chats, const MTPVector<MTPMessage> &msgs, const MTPVector<MTPUpdate> &other) {
@@ -2375,6 +2376,7 @@ bool MainWidget::failDifference(const RPCError &error) {
 void MainWidget::getDifferenceForce() {
 	if (MTP::authedId()) {
 		updInited = true;
+		MTP_LOG(0, ("getDifference { force - after get difference failed }"));
 		getDifference();
 	}
 }
@@ -2431,9 +2433,16 @@ bool MainWidget::started() {
 }
 
 void MainWidget::openLocalUrl(const QString &url) {
-	QRegularExpressionMatch m = QRegularExpression(qsl("^tg://resolve/?\\?domain=([a-zA-Z0-9\\.\\_]+)$"), QRegularExpression::CaseInsensitiveOption).match(url.trimmed());
-	if (m.hasMatch()) {
-		openUserByName(m.captured(1));
+	QString u(url.trimmed());
+	if (u.startsWith(QLatin1String("tg://resolve"), Qt::CaseInsensitive)) {
+		QRegularExpressionMatch m = QRegularExpression(qsl("^tg://resolve/?\\?domain=([a-zA-Z0-9\\.\\_]+)$"), QRegularExpression::CaseInsensitiveOption).match(u);
+		if (m.hasMatch()) {
+			openUserByName(m.captured(1));
+		}
+	} else if (u.startsWith(QLatin1String("tg://join"), Qt::CaseInsensitive)) {
+		QRegularExpressionMatch m = QRegularExpression(qsl("^tg://join/?\\?invite=([a-zA-Z0-9\\.\\_]+)$"), QRegularExpression::CaseInsensitiveOption).match(u);
+		if (m.hasMatch()) {
+		}
 	}
 }
 
@@ -2749,6 +2758,7 @@ void MainWidget::updateReceived(const mtpPrime *from, const mtpPrime *end) {
 	if (mtpTypeId(*from) == mtpc_new_session_created) {
 		MTPNewSession newSession(from, end);
 		updSeq = 0;
+		MTP_LOG(0, ("getDifference { after new_session_created }"));
 		return getDifference();
 	} else {
 		try {
@@ -2811,7 +2821,7 @@ void MainWidget::handleUpdates(const MTPUpdates &updates) {
 	case mtpc_updateShortMessage: {
 		const MTPDupdateShortMessage &d(updates.c_updateShortMessage());
 		if (!App::userLoaded(d.vuser_id.v) || (d.has_fwd_from_id() && !App::userLoaded(d.vfwd_from_id.v))) {
-			DEBUG_LOG(("Not loaded for updateShortMessage, good getDifference!"));
+			MTP_LOG(0, ("getDifference { good - getting user for updateShortMessage }"));
 			return getDifference();
 		}
 		if (!updPtsUpdated(d.vpts.v, d.vpts_count.v)) {
@@ -2830,7 +2840,7 @@ void MainWidget::handleUpdates(const MTPUpdates &updates) {
 	case mtpc_updateShortChatMessage: {
 		const MTPDupdateShortChatMessage &d(updates.c_updateShortChatMessage());
 		if (!App::chatLoaded(d.vchat_id.v) || !App::userLoaded(d.vfrom_id.v) || (d.has_fwd_from_id() && !App::userLoaded(d.vfwd_from_id.v))) {
-			DEBUG_LOG(("Not loaded for updateShortMessage, good getDifference!"));
+			MTP_LOG(0, ("getDifference { good - getting user for updateShortChatMessage }"));
 			return getDifference();
 		}
 		if (!updPtsUpdated(d.vpts.v, d.vpts_count.v)) {
@@ -2846,6 +2856,7 @@ void MainWidget::handleUpdates(const MTPUpdates &updates) {
 	} break;
 
 	case mtpc_updatesTooLong: {
+		MTP_LOG(0, ("getDifference { good - updatesTooLong received }"));
 		return getDifference();
 	} break;
 	}
diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp
index 6d4ceb307..2601e71b3 100644
--- a/Telegram/SourceFiles/mediaview.cpp
+++ b/Telegram/SourceFiles/mediaview.cpp
@@ -1088,7 +1088,7 @@ void MediaView::paintEvent(QPaintEvent *e) {
 					p.setOpacity(_docRadialOpacity);
 					p.setPen(_docRadialPen);
 
-					int len = 512 + a_docRadial.current() * 5744;
+					int len = 16 + a_docRadial.current() * 5744;
 					p.drawArc(arc, 1440 - a_docRadialStart.current() * 5760 - len, len);
 
 					p.setOpacity(1);
diff --git a/Telegram/SourceFiles/settings.cpp b/Telegram/SourceFiles/settings.cpp
index 01b1b987d..ae1da9cc7 100644
--- a/Telegram/SourceFiles/settings.cpp
+++ b/Telegram/SourceFiles/settings.cpp
@@ -70,7 +70,7 @@ bool gCtrlEnter = false;
 QPixmapPointer gChatBackground = 0;
 int32 gChatBackgroundId = 0;
 QPixmapPointer gChatDogImage = 0;
-bool gTileBackground = true;
+bool gTileBackground = false;
 
 uint32 gConnectionsInSession = 1;
 QString gLoggedPhoneNumber;
diff --git a/Telegram/SourceFiles/telegram.qrc b/Telegram/SourceFiles/telegram.qrc
index 1e4dd15f0..c86458f3d 100644
--- a/Telegram/SourceFiles/telegram.qrc
+++ b/Telegram/SourceFiles/telegram.qrc
@@ -4,10 +4,7 @@
     <file>art/fonts/OpenSans-Bold.ttf</file>
     <file>art/fonts/OpenSans-Semibold.ttf</file>
     <file>art/newmsg.wav</file>
-    <file>art/bg.png</file>
-    <file>art/bg_125x.png</file>
-    <file>art/bg_150x.png</file>
-    <file>art/bg_200x.png</file>
+    <file>art/bg.jpg</file>
     <file>art/sprite.png</file>
     <file>art/sprite_125x.png</file>
     <file>art/sprite_150x.png</file>
diff --git a/Telegram/Telegram.plist b/Telegram/Telegram.plist
index 9075382d7..d06a20fff 100644
--- a/Telegram/Telegram.plist
+++ b/Telegram/Telegram.plist
@@ -11,7 +11,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>0.8.4</string>
+	<string>0.8.5</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleURLTypes</key>
diff --git a/Telegram/Telegram.rc b/Telegram/Telegram.rc
index f20174328..d80da9175 100644
Binary files a/Telegram/Telegram.rc and b/Telegram/Telegram.rc differ
diff --git a/Telegram/Telegram.xcodeproj/project.pbxproj b/Telegram/Telegram.xcodeproj/project.pbxproj
index b0c6a659b..c51ccaa0e 100644
--- a/Telegram/Telegram.xcodeproj/project.pbxproj
+++ b/Telegram/Telegram.xcodeproj/project.pbxproj
@@ -1683,7 +1683,7 @@
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 0.8.4;
+				CURRENT_PROJECT_VERSION = 0.8.5;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
@@ -1701,7 +1701,7 @@
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COPY_PHASE_STRIP = YES;
-				CURRENT_PROJECT_VERSION = 0.8.4;
+				CURRENT_PROJECT_VERSION = 0.8.5;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
 				GCC_OPTIMIZATION_LEVEL = fast;
 				GCC_PREFIX_HEADER = ./SourceFiles/stdafx.h;
@@ -1727,10 +1727,10 @@
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CODE_SIGN_IDENTITY = "";
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 0.8.4;
+				CURRENT_PROJECT_VERSION = 0.8.5;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DYLIB_COMPATIBILITY_VERSION = 0.8;
-				DYLIB_CURRENT_VERSION = 0.8.4;
+				DYLIB_CURRENT_VERSION = 0.8.5;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
@@ -1869,10 +1869,10 @@
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CODE_SIGN_IDENTITY = "";
 				COPY_PHASE_STRIP = NO;
-				CURRENT_PROJECT_VERSION = 0.8.4;
+				CURRENT_PROJECT_VERSION = 0.8.5;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				DYLIB_COMPATIBILITY_VERSION = 0.8;
-				DYLIB_CURRENT_VERSION = 0.8.4;
+				DYLIB_CURRENT_VERSION = 0.8.5;
 				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
diff --git a/Telegram/Version.sh b/Telegram/Version.sh
index 430fda87f..5847a797a 100755
--- a/Telegram/Version.sh
+++ b/Telegram/Version.sh
@@ -1,2 +1,2 @@
-echo 8004 0.8.4 0
+echo 8005 0.8.5 1
 # AppVersion AppVersionStr DevChannel