diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp
index 5cc2978df..b5d4f9349 100644
--- a/Telegram/SourceFiles/apiwrap.cpp
+++ b/Telegram/SourceFiles/apiwrap.cpp
@@ -82,6 +82,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "ui/chat/attach/attach_prepare.h"
 #include "ui/toasts/common_toasts.h"
 #include "support/support_helper.h"
+#include "settings/settings_premium.h"
 #include "storage/localimageloader.h"
 #include "storage/download_manager_mtproto.h"
 #include "storage/file_upload.h"
@@ -452,10 +453,7 @@ void ApiWrap::sendMessageFail(
 			: tr::lng_error_noforwards_group(tr::now)
 		}, .duration = kJoinErrorDuration });
 	} else if (error.type() == qstr("PREMIUM_ACCOUNT_REQUIRED")) {
-		Ui::ShowMultilineToast({
-			.text = { u"Premium sticker."_q },
-			.duration = kJoinErrorDuration,
-		});
+		Settings::ShowPremium(&session());
 	}
 	if (const auto item = _session->data().message(itemId)) {
 		Assert(randomId != 0);
diff --git a/Telegram/SourceFiles/boxes/boxes.style b/Telegram/SourceFiles/boxes/boxes.style
index 4322190c7..3455548c4 100644
--- a/Telegram/SourceFiles/boxes/boxes.style
+++ b/Telegram/SourceFiles/boxes/boxes.style
@@ -1082,7 +1082,7 @@ premiumBubblePadding: margins(14px, 0px, 14px, 0px);
 premiumBubbleHeight: 40px;
 premiumBubbleSkip: 5px;
 premiumBubbleTextSkip: 3px;
-premiumBubbleSlideDuration: 500;
+premiumBubbleSlideDuration: 1000;
 premiumBubbleTailSize: size(21px, 7px);
 premiumBubbleFont: font(19px);
 premiumLineTextSkip: 11px;
diff --git a/Telegram/SourceFiles/boxes/premium_limits_box.cpp b/Telegram/SourceFiles/boxes/premium_limits_box.cpp
index baaaa9b39..1b02125b3 100644
--- a/Telegram/SourceFiles/boxes/premium_limits_box.cpp
+++ b/Telegram/SourceFiles/boxes/premium_limits_box.cpp
@@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "data/data_session.h"
 #include "lang/lang_keys.h"
 #include "settings/settings_common.h"
+#include "settings/settings_premium.h"
 #include "base/unixtime.h"
 #include "apiwrap.h"
 #include "styles/style_boxes.h"
@@ -432,9 +433,7 @@ void SimpleLimitBox(
 		});
 	} else {
 		box->addButton(tr::lng_limits_increase(), [=] {
-			Ui::ShowMultilineToast({
-				.text = { u"Premium!"_q },
-			});
+			Settings::ShowPremium(session);
 		});
 	}
 
@@ -565,9 +564,7 @@ void ChannelsLimitBox(
 			});
 		} else {
 			box->addButton(tr::lng_limits_increase(), [=] {
-				Ui::ShowMultilineToast({
-					.text = { u"Premium!"_q },
-				});
+				Settings::ShowPremium(session);
 			});
 		}
 	}, box->lifetime());
diff --git a/Telegram/SourceFiles/boxes/reactions_settings_box.cpp b/Telegram/SourceFiles/boxes/reactions_settings_box.cpp
index 1f47ae7ed..bd0207b30 100644
--- a/Telegram/SourceFiles/boxes/reactions_settings_box.cpp
+++ b/Telegram/SourceFiles/boxes/reactions_settings_box.cpp
@@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "lottie/lottie_icon.h"
 #include "main/main_session.h"
 #include "settings/settings_common.h"
+#include "settings/settings_premium.h"
 #include "ui/chat/chat_style.h"
 #include "ui/chat/chat_theme.h"
 #include "ui/effects/scroll_content_shadow.h"
@@ -447,9 +448,7 @@ void ReactionsSettingsBox(
 
 		button->setClickedCallback([=, emoji = r.emoji] {
 			if (premium && !controller->session().user()->isPremium()) {
-				Ui::ShowMultilineToast({
-					.text = { u"Premium reaction."_q },
-				});
+				Settings::ShowPremium(&controller->session());
 				return;
 			}
 			checkButton(button);
diff --git a/Telegram/SourceFiles/boxes/sticker_preview_box.cpp b/Telegram/SourceFiles/boxes/sticker_preview_box.cpp
index 8dfbbffe8..43c23baf9 100644
--- a/Telegram/SourceFiles/boxes/sticker_preview_box.cpp
+++ b/Telegram/SourceFiles/boxes/sticker_preview_box.cpp
@@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "ui/widgets/buttons.h"
 #include "ui/widgets/gradient_round_button.h"
 #include "ui/wrap/padding_wrap.h"
+#include "settings/settings_premium.h"
 #include "lottie/lottie_single_player.h"
 #include "history/view/media/history_view_sticker.h"
 #include "window/window_session_controller.h"
@@ -204,7 +205,7 @@ void StickerBox(
 	const auto width = size - buttonPadding.left() - buttonPadding.right();
 	auto button = CreateUnlockButton(box, width);
 	button->setClickedCallback([=] {
-		controller->showSettings();
+		controller->showSettings(Settings::PremiumId());
 	});
 	box->addButton(std::move(button));
 }
diff --git a/Telegram/SourceFiles/data/stickers/data_stickers.cpp b/Telegram/SourceFiles/data/stickers/data_stickers.cpp
index 5b532f4ad..40a71d8c6 100644
--- a/Telegram/SourceFiles/data/stickers/data_stickers.cpp
+++ b/Telegram/SourceFiles/data/stickers/data_stickers.cpp
@@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "history/history_item_components.h"
 #include "apiwrap.h"
 #include "storage/storage_account.h"
+#include "settings/settings_premium.h"
 #include "core/application.h"
 #include "core/core_settings.h"
 #include "main/main_session.h"
@@ -98,10 +99,7 @@ void MaybeShowPremiumToast(
 	const auto widget = QPointer<Ui::RpWidget>(
 		controller->window().widget()->bodyWidget());
 	const auto filter = [=](const auto ...) {
-		Ui::ShowMultilineToast({
-			.parentOverride = widget,
-			.text = { u"Premium!"_q },
-		});
+		controller->showSettings(Settings::PremiumId());
 		return false;
 	};
 	Ui::ShowMultilineToast({
diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp
index 1f584dfbb..ecd6417a7 100644
--- a/Telegram/SourceFiles/settings/settings_premium.cpp
+++ b/Telegram/SourceFiles/settings/settings_premium.cpp
@@ -9,6 +9,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 
 #include "lang/lang_keys.h"
 #include "settings/settings_common.h"
+#include "settings/settings_premium.h"
+#include "core/application.h"
 #include "ui/abstract_button.h"
 #include "ui/effects/gradient.h"
 #include "ui/text/text_utilities.h"
@@ -17,6 +19,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "ui/wrap/padding_wrap.h"
 #include "ui/wrap/vertical_layout.h"
 #include "window/window_session_controller.h"
+#include "window/window_controller.h"
+#include "main/main_session.h"
 #include "styles/style_boxes.h"
 #include "styles/style_chat_helpers.h"
 #include "styles/style_layers.h"
@@ -251,4 +255,20 @@ Type PremiumId() {
 	return Premium::Id();
 }
 
+void ShowPremium(not_null<Main::Session*> session) {
+	const auto active = Core::App().activeWindow();
+	const auto controller = (active && active->isPrimary())
+		? active->sessionController()
+		: nullptr;
+	if (controller && session == &controller->session()) {
+		controller->showSettings(Settings::PremiumId());
+	} else {
+		for (const auto &controller : session->windows()) {
+			if (controller->window().isPrimary()) {
+				controller->showSettings(Settings::PremiumId());
+			}
+		}
+	}
+}
+
 } // namespace Settings
diff --git a/Telegram/SourceFiles/settings/settings_premium.h b/Telegram/SourceFiles/settings/settings_premium.h
index cdc83c1b3..3a8111917 100644
--- a/Telegram/SourceFiles/settings/settings_premium.h
+++ b/Telegram/SourceFiles/settings/settings_premium.h
@@ -9,9 +9,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 
 #include "settings/settings_type.h"
 
+namespace Main {
+class Session;
+} // namespace Main
+
 namespace Settings {
 
-Type PremiumId();
+[[nodiscard]] Type PremiumId();
+
+void ShowPremium(not_null<::Main::Session*> session);
 
 } // namespace Settings
 
diff --git a/Telegram/SourceFiles/ui/effects/premium_graphics.cpp b/Telegram/SourceFiles/ui/effects/premium_graphics.cpp
index 1e40ff4e1..b3c16bd5a 100644
--- a/Telegram/SourceFiles/ui/effects/premium_graphics.cpp
+++ b/Telegram/SourceFiles/ui/effects/premium_graphics.cpp
@@ -303,7 +303,7 @@ BubbleWidget::BubbleWidget(
 		0.,
 		1.,
 		st::premiumBubbleSlideDuration,
-		anim::easeOutCubic);
+		anim::easeOutCirc);
 	}, lifetime());
 }
 
diff --git a/Telegram/SourceFiles/window/section_widget.cpp b/Telegram/SourceFiles/window/section_widget.cpp
index 76c766d5b..3ed5bca4a 100644
--- a/Telegram/SourceFiles/window/section_widget.cpp
+++ b/Telegram/SourceFiles/window/section_widget.cpp
@@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "data/data_cloud_themes.h"
 #include "data/data_message_reactions.h"
 #include "history/history_item.h"
+#include "settings/settings_premium.h"
 #include "main/main_session.h"
 #include "window/section_memento.h"
 #include "window/window_slide_animation.h"
@@ -353,9 +354,7 @@ bool ShowReactPremiumError(
 	if (i == end(list) || !i->premium) {
 		return false;
 	}
-	Ui::ShowMultilineToast({
-		.text = { u"Premium reaction."_q },
-	});
+	Settings::ShowPremium(&controller->session());
 	return true;
 }