diff --git a/Telegram/SourceFiles/intro/intro_step.cpp b/Telegram/SourceFiles/intro/intro_step.cpp
index 151951b49..681a5020a 100644
--- a/Telegram/SourceFiles/intro/intro_step.cpp
+++ b/Telegram/SourceFiles/intro/intro_step.cpp
@@ -233,6 +233,9 @@ bool Step::paintAnimated(Painter &p, QRect clip) {
 		}
 		return false;
 	}
+	if (!_coverAnimation.clipping.isEmpty()) {
+		p.setClipRect(_coverAnimation.clipping);
+	}
 
 	auto progress = (hasCover() ? anim::easeOutCirc(1., dt) : anim::linear(1., dt));
 	auto arrivingAlpha = progress;
@@ -451,6 +454,10 @@ void Step::showAnimated(Direction direction) {
 	}
 }
 
+void Step::setShowAnimationClipping(QRect clipping) {
+	_coverAnimation.clipping = clipping;
+}
+
 void Step::setGoCallback(Fn<void(Step *step, Direction direction)> callback) {
 	_goCallback = std::move(callback);
 }
diff --git a/Telegram/SourceFiles/intro/intro_step.h b/Telegram/SourceFiles/intro/intro_step.h
index c53826622..c51db5e42 100644
--- a/Telegram/SourceFiles/intro/intro_step.h
+++ b/Telegram/SourceFiles/intro/intro_step.h
@@ -64,6 +64,7 @@ public:
 	void showAnimated(Direction direction);
 	void showFast();
 	[[nodiscard]] bool animating() const;
+	void setShowAnimationClipping(QRect clipping);
 
 	[[nodiscard]] bool hasCover() const;
 	[[nodiscard]] virtual bool hasBack() const;
@@ -142,6 +143,8 @@ private:
 		// From content top till the next button top.
 		QPixmap contentSnapshotWas;
 		QPixmap contentSnapshotNow;
+
+		QRect clipping;
 	};
 	void updateLabelsPosition();
 	void paintContentSnapshot(
diff --git a/Telegram/SourceFiles/intro/intro_widget.cpp b/Telegram/SourceFiles/intro/intro_widget.cpp
index 078c43f3e..6b2bd5c32 100644
--- a/Telegram/SourceFiles/intro/intro_widget.cpp
+++ b/Telegram/SourceFiles/intro/intro_widget.cpp
@@ -639,6 +639,9 @@ void Widget::updateControlsGeometry() {
 		nextTop,
 		shownAmount);
 	_next->moveToLeft((width() - _next->width()) / 2, realNextTop);
+	getStep()->setShowAnimationClipping(shownAmount > 0
+		? QRect(0, 0, width(), realNextTop)
+		: QRect());
 	if (_changeLanguage) {
 		_changeLanguage->moveToLeft((width() - _changeLanguage->width()) / 2, _next->y() + _next->height() + _changeLanguage->height());
 	}