diff --git a/src/core/delegated_frame_node.cpp b/src/core/delegated_frame_node.cpp
index e1ff2f56cdb12cd58e1b3603a36953a1aed7882c..9805e3333af7b45cf5be4844668a6fb69e4c8fcb 100644
--- a/src/core/delegated_frame_node.cpp
+++ b/src/core/delegated_frame_node.cpp
@@ -185,10 +185,8 @@ public:
 
     virtual void setupRenderPassNode(QSGTexture *, const QRect &, QSGNode *) = 0;
     virtual void setupTextureContentNode(QSGTexture *, const QRect &, const QRectF &,
-                                         QSGTextureNode::TextureCoordinatesTransformMode,
+                                         QSGImageNode::TextureCoordinatesTransformMode,
                                          QSGNode *) = 0;
-    virtual void setupTiledContentNode(QSGTexture *, const QRect &, const QRectF &,
-                                       QSGNode *) = 0;
     virtual void setupSolidColorNode(const QRect &, const QColor &, QSGNode *) = 0;
 
 #ifndef QT_NO_OPENGL
@@ -227,15 +225,18 @@ public:
     }
 
     void setupTextureContentNode(QSGTexture *texture, const QRect &rect, const QRectF &sourceRect,
-                                 QSGTextureNode::TextureCoordinatesTransformMode texCoordTransForm,
+                                 QSGImageNode::TextureCoordinatesTransformMode texCoordTransForm,
                                  QSGNode *) override
     {
         Q_ASSERT(m_nodeIterator != m_sceneGraphNodes->end());
-        QSGTextureNode *textureNode = static_cast<QSGTextureNode*>(*m_nodeIterator++);
+        QSGImageNode *textureNode = static_cast<QSGImageNode*>(*m_nodeIterator++);
         if (textureNode->texture() != texture) {
+            // Chromium sometimes uses textures that doesn't completely fit
+            // in which case the geometry needs to be recalculated even if
+            // rect and src-rect matches.
+            if (textureNode->texture()->textureSize() != texture->textureSize())
+                textureNode->markDirty(QSGImageNode::DirtyGeometry);
             textureNode->setTexture(texture);
-            // @TODO: This is a workaround for funky rendering, figure out why this is needed.
-            textureNode->markDirty(QSGTextureNode::DirtyGeometry);
         }
         if (textureNode->textureCoordinatesTransform() != texCoordTransForm)
             textureNode->setTextureCoordinatesTransform(texCoordTransForm);
@@ -246,23 +247,6 @@ public:
         if (textureNode->filtering() != texture->filtering())
             textureNode->setFiltering(texture->filtering());
     }
-    void setupTiledContentNode(QSGTexture *texture, const QRect &rect, const QRectF &sourceRect,
-                               QSGNode *) override
-    {
-        Q_ASSERT(m_nodeIterator != m_sceneGraphNodes->end());
-        QSGTextureNode *textureNode = static_cast<QSGTextureNode*>(*m_nodeIterator++);
-        if (textureNode->texture() != texture) {
-            textureNode->setTexture(texture);
-            // @TODO: This is a workaround for funky rendering, figure out why this is needed.
-            textureNode->markDirty(QSGTextureNode::DirtyGeometry);
-        }
-        if (textureNode->rect() != rect)
-            textureNode->setRect(rect);
-        if (textureNode->sourceRect() != sourceRect)
-            textureNode->setSourceRect(sourceRect);
-        if (textureNode->filtering() != texture->filtering())
-            textureNode->setFiltering(texture->filtering());
-    }
     void setupSolidColorNode(const QRect &rect, const QColor &color, QSGNode *) override
     {
         Q_ASSERT(m_nodeIterator != m_sceneGraphNodes->end());
@@ -330,10 +314,10 @@ public:
     }
 
     void setupTextureContentNode(QSGTexture *texture, const QRect &rect, const QRectF &sourceRect,
-                                 QSGTextureNode::TextureCoordinatesTransformMode texCoordTransForm,
+                                 QSGImageNode::TextureCoordinatesTransformMode texCoordTransForm,
                                  QSGNode *layerChain) override
     {
-        QSGTextureNode *textureNode = m_apiDelegate->createTextureNode();
+        QSGImageNode *textureNode = m_apiDelegate->createImageNode();
         textureNode->setTextureCoordinatesTransform(texCoordTransForm);
         textureNode->setRect(rect);
         textureNode->setSourceRect(sourceRect);
@@ -344,19 +328,6 @@ public:
         m_sceneGraphNodes->append(textureNode);
     }
 
-    void setupTiledContentNode(QSGTexture *texture, const QRect &rect, const QRectF &sourceRect,
-                               QSGNode *layerChain) override
-    {
-        QSGTextureNode *textureNode = m_apiDelegate->createTextureNode();
-        textureNode->setRect(rect);
-        textureNode->setSourceRect(sourceRect);
-        textureNode->setFiltering(texture->filtering());
-        textureNode->setTexture(texture);
-
-        layerChain->appendChildNode(textureNode);
-        m_sceneGraphNodes->append(textureNode);
-    }
-
     void setupSolidColorNode(const QRect &rect, const QColor &color,
                              QSGNode *layerChain) override
     {
@@ -1124,7 +1095,7 @@ void DelegatedFrameNode::handleQuad(
 
         nodeHandler->setupTextureContentNode(
             texture, toQt(quad->rect), toQt(uv_rect),
-            tquad->y_flipped ? QSGTextureNode::MirrorVertically : QSGTextureNode::NoTransform,
+            tquad->y_flipped ? QSGImageNode::MirrorVertically : QSGImageNode::NoTransform,
             currentLayerChain);
         break;
     }
@@ -1164,10 +1135,10 @@ void DelegatedFrameNode::handleQuad(
     case viz::DrawQuad::TILED_CONTENT: {
         const viz::TileDrawQuad *tquad = viz::TileDrawQuad::MaterialCast(quad);
         ResourceHolder *resource = findAndHoldResource(tquad->resource_id(), resourceCandidates);
-        nodeHandler->setupTiledContentNode(
+        nodeHandler->setupTextureContentNode(
             initAndHoldTexture(resource, quad->ShouldDrawWithBlending(), apiDelegate),
             toQt(quad->rect), toQt(tquad->tex_coord_rect),
-            currentLayerChain);
+            QSGImageNode::NoTransform, currentLayerChain);
         break;
 #ifndef QT_NO_OPENGL
     }
diff --git a/src/core/render_widget_host_view_qt_delegate.h b/src/core/render_widget_host_view_qt_delegate.h
index 72f54dcb667acc4571be7c9734bc09beb40a2f64..8936ce63e11e8d5b6a2f4685e0fbaa93152cdd85 100644
--- a/src/core/render_widget_host_view_qt_delegate.h
+++ b/src/core/render_widget_host_view_qt_delegate.h
@@ -67,7 +67,6 @@ class QInputMethodEvent;
 
 class QSGInternalImageNode;
 class QSGImageNode;
-typedef QSGImageNode QSGTextureNode;
 
 QT_END_NAMESPACE
 
@@ -106,8 +105,8 @@ public:
     virtual QWindow* window() const = 0;
     virtual QSGTexture *createTextureFromImage(const QImage &) = 0;
     virtual QSGLayer *createLayer() = 0;
-    virtual QSGInternalImageNode *createImageNode() = 0;
-    virtual QSGTextureNode *createTextureNode() = 0;
+    virtual QSGInternalImageNode *createInternalImageNode() = 0;
+    virtual QSGImageNode *createImageNode() = 0;
     virtual QSGRectangleNode *createRectangleNode() = 0;
     virtual void update() = 0;
     virtual void updateCursor(const QCursor &) = 0;
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp
index 3d539f8b2a43adba0343da972dfe4bdbed78101f..baece82f3535f7a4c9469af1bc62e63f4da99942 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp
+++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp
@@ -177,13 +177,13 @@ QSGLayer *RenderWidgetHostViewQtDelegateQuick::createLayer()
     return renderContext->sceneGraphContext()->createLayer(renderContext);
 }
 
-QSGInternalImageNode *RenderWidgetHostViewQtDelegateQuick::createImageNode()
+QSGInternalImageNode *RenderWidgetHostViewQtDelegateQuick::createInternalImageNode()
 {
     QSGRenderContext *renderContext = QQuickWindowPrivate::get(QQuickItem::window())->context;
     return renderContext->sceneGraphContext()->createInternalImageNode();
 }
 
-QSGTextureNode *RenderWidgetHostViewQtDelegateQuick::createTextureNode()
+QSGImageNode *RenderWidgetHostViewQtDelegateQuick::createImageNode()
 {
     return QQuickItem::window()->createImageNode();
 }
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.h b/src/webengine/render_widget_host_view_qt_delegate_quick.h
index a5101d070b1a3b9d5819e3a91649f48e7cc19261..74cddf4768c4ed6d59d0daee47dc79f73d4c1c14 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quick.h
+++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h
@@ -66,8 +66,8 @@ public:
     QWindow* window() const override;
     QSGTexture *createTextureFromImage(const QImage &) override;
     QSGLayer *createLayer() override;
-    QSGInternalImageNode *createImageNode() override;
-    QSGTextureNode *createTextureNode() override;
+    QSGInternalImageNode *createInternalImageNode() override;
+    QSGImageNode *createImageNode() override;
     QSGRectangleNode *createRectangleNode() override;
     void update() override;
     void updateCursor(const QCursor &) override;
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp
index 7b7d32d67b1df934bb56bfd46c29877e60ce394f..dd37ff6faff19b67c74072b9d8c2bc575b0a70ad 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp
+++ b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.cpp
@@ -111,14 +111,14 @@ QSGLayer *RenderWidgetHostViewQtDelegateQuickWindow::createLayer()
     return m_realDelegate->createLayer();
 }
 
-QSGInternalImageNode *RenderWidgetHostViewQtDelegateQuickWindow::createImageNode()
+QSGInternalImageNode *RenderWidgetHostViewQtDelegateQuickWindow::createInternalImageNode()
 {
-    return m_realDelegate->createImageNode();
+    return m_realDelegate->createInternalImageNode();
 }
 
-QSGTextureNode *RenderWidgetHostViewQtDelegateQuickWindow::createTextureNode()
+QSGImageNode *RenderWidgetHostViewQtDelegateQuickWindow::createImageNode()
 {
-    return m_realDelegate->createTextureNode();
+    return m_realDelegate->createImageNode();
 }
 
 QSGRectangleNode *RenderWidgetHostViewQtDelegateQuickWindow::createRectangleNode()
diff --git a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h
index be4033728a62cb2b2114297687ff4a3e52c7a672..6a1be8b7f7d9c81802ea31c48f53869d5042303d 100644
--- a/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h
+++ b/src/webengine/render_widget_host_view_qt_delegate_quickwindow.h
@@ -69,8 +69,8 @@ public:
     QWindow* window() const override;
     QSGTexture *createTextureFromImage(const QImage &) override;
     QSGLayer *createLayer() override;
-    QSGInternalImageNode *createImageNode() override;
-    QSGTextureNode *createTextureNode() override;
+    QSGInternalImageNode *createInternalImageNode() override;
+    QSGImageNode *createImageNode() override;
     QSGRectangleNode *createRectangleNode() override;
     void update() override;
     void updateCursor(const QCursor &) override;
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
index d7bcd0ae362d6a787fca39b401b0825d7e9f7cb4..13c65f1ec168d388886c91171c5d2aeb28018a52 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
@@ -310,13 +310,13 @@ QSGLayer *RenderWidgetHostViewQtDelegateWidget::createLayer()
     return renderContext->sceneGraphContext()->createLayer(renderContext);
 }
 
-QSGInternalImageNode *RenderWidgetHostViewQtDelegateWidget::createImageNode()
+QSGInternalImageNode *RenderWidgetHostViewQtDelegateWidget::createInternalImageNode()
 {
     QSGRenderContext *renderContext = QQuickWindowPrivate::get(quickWindow())->context;
     return renderContext->sceneGraphContext()->createInternalImageNode();
 }
 
-QSGTextureNode *RenderWidgetHostViewQtDelegateWidget::createTextureNode()
+QSGImageNode *RenderWidgetHostViewQtDelegateWidget::createImageNode()
 {
     return quickWindow()->createImageNode();
 }
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
index 42b454bc5dfccb7ceb9538eaeb582e61af8ba9c1..4dc47dfddd7fcd3c8b48556d946c63c6261063a1 100644
--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h
@@ -73,8 +73,8 @@ public:
     QWindow* window() const override;
     QSGTexture *createTextureFromImage(const QImage &) override;
     QSGLayer *createLayer() override;
-    QSGInternalImageNode *createImageNode() override;
-    QSGTextureNode *createTextureNode() override;
+    QSGInternalImageNode *createInternalImageNode() override;
+    QSGImageNode *createImageNode() override;
     QSGRectangleNode *createRectangleNode() override;
     void update() override;
     void updateCursor(const QCursor &) override;