diff --git a/src/previewengine.cpp b/src/previewengine.cpp
index cce8cba28cbeb8f9d7b8f0d33cbe1c7b2e279731..b5061c7314674e340042a1f7661c214c0d0d1896 100644
--- a/src/previewengine.cpp
+++ b/src/previewengine.cpp
@@ -24,7 +24,7 @@
 #include <QWebEngineSettings>
 
 PreviewEngine::PreviewEngine(QObject* parent)
-    : QWebEngineView(qobject_cast<QWidget*>(parent))
+    : QWebEnginePage(parent)
     , pimpl_(new PreviewEnginePrivate(this))
 {
     QWebEngineProfile* profile = QWebEngineProfile::defaultProfile();
@@ -37,8 +37,6 @@ PreviewEngine::PreviewEngine(QObject* parent)
     profile->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);
     profile->setHttpCacheType(QWebEngineProfile::NoCache);
 
-    setPage(new QWebEnginePage(profile, this));
-
     settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
     settings()->setAttribute(QWebEngineSettings::ScrollAnimatorEnabled, false);
     settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
@@ -51,27 +49,23 @@ PreviewEngine::PreviewEngine(QObject* parent)
     settings()->setAttribute(QWebEngineSettings::XSSAuditingEnabled, false);
     settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true);
 
-    setContextMenuPolicy(Qt::ContextMenuPolicy::NoContextMenu);
-
     channel_ = new QWebChannel(this);
     channel_->registerObject(QStringLiteral("jsbridge"), pimpl_);
 
-    page()->setWebChannel(channel_);
-    page()->runJavaScript(Utils::QByteArrayFromFile(":/linkify.js"), QWebEngineScript::MainWorld);
-    page()->runJavaScript(Utils::QByteArrayFromFile(":/linkify-string.js"),
-                          QWebEngineScript::MainWorld);
-    page()->runJavaScript(Utils::QByteArrayFromFile(":/qwebchannel.js"),
-                          QWebEngineScript::MainWorld);
-    page()->runJavaScript(Utils::QByteArrayFromFile(":/previewInfo.js"),
-                          QWebEngineScript::MainWorld);
-    page()->runJavaScript(Utils::QByteArrayFromFile(":/misc/previewInterop.js"),
-                          QWebEngineScript::MainWorld);
+    setWebChannel(channel_);
+    runJavaScript(Utils::QByteArrayFromFile(":/linkify.js"), QWebEngineScript::MainWorld);
+    runJavaScript(Utils::QByteArrayFromFile(":/linkify-string.js"), QWebEngineScript::MainWorld);
+    runJavaScript(Utils::QByteArrayFromFile(":/qwebchannel.js"), QWebEngineScript::MainWorld);
+    runJavaScript(Utils::QByteArrayFromFile(":/previewInfo.js"), QWebEngineScript::MainWorld);
+    runJavaScript(Utils::QByteArrayFromFile(":/misc/previewInterop.js"),
+                  QWebEngineScript::MainWorld);
 }
 
 void
 PreviewEngine::parseMessage(const QString& messageId, const QString& msg, bool showPreview)
 {
-    page()->runJavaScript(QString("parseMessage(`%1`, `%2`, %3)").arg(messageId, msg, showPreview ? "true" : "false"));
+    runJavaScript(
+        QString("parseMessage(`%1`, `%2`, %3)").arg(messageId, msg, showPreview ? "true" : "false"));
 }
 
 void
diff --git a/src/previewengine.h b/src/previewengine.h
index 3122ad7391d102c8e8d63b1ad33b337d5d79cc3f..ea57f296a25c49dcc6f8754a37510330bc23e0d4 100644
--- a/src/previewengine.h
+++ b/src/previewengine.h
@@ -22,8 +22,7 @@
 #include "utils.h"
 
 #include <QtWebChannel>
-#include <QtWebEngineCore>
-#include <QWebEngineView>
+#include <QWebEnginePage>
 
 class PreviewEngine;
 
@@ -43,7 +42,7 @@ private:
     PreviewEngine* parent_;
 };
 
-class PreviewEngine : public QWebEngineView
+class PreviewEngine : public QWebEnginePage
 {
     Q_OBJECT
 public: