diff --git a/src/scene/imageitem.cpp b/src/scene/imageitem.cpp index 72df2ccc94..ea669ad3da 100644 --- a/src/scene/imageitem.cpp +++ b/src/scene/imageitem.cpp @@ -24,6 +24,7 @@ QImage ImageItem::image() const void ImageItem::setImage(const QImage &image) { m_image = image; + discardQuads(); } ImageItemOpenGL::ImageItemOpenGL(Item *parent) @@ -68,11 +69,13 @@ WindowQuadList ImageItemOpenGL::buildQuads() const return WindowQuadList{}; } + const QRectF imageRect = m_image.rect(); + WindowQuad quad; - quad[0] = WindowVertex(geometry.topLeft(), QPointF(0, 0)); - quad[1] = WindowVertex(geometry.topRight(), QPointF(1, 0)); - quad[2] = WindowVertex(geometry.bottomRight(), QPointF(1, 1)); - quad[3] = WindowVertex(geometry.bottomLeft(), QPointF(0, 1)); + quad[0] = WindowVertex(geometry.topLeft(), imageRect.topLeft()); + quad[1] = WindowVertex(geometry.topRight(), imageRect.topRight()); + quad[2] = WindowVertex(geometry.bottomRight(), imageRect.bottomRight()); + quad[3] = WindowVertex(geometry.bottomLeft(), imageRect.bottomLeft()); WindowQuadList ret; ret.append(quad); diff --git a/src/scene/itemrenderer_opengl.cpp b/src/scene/itemrenderer_opengl.cpp index 94dbcbba6c..01105abe8c 100644 --- a/src/scene/itemrenderer_opengl.cpp +++ b/src/scene/itemrenderer_opengl.cpp @@ -210,7 +210,7 @@ void ItemRendererOpenGL::createRenderNode(Item *item, RenderContext *context) .transformMatrix = context->transformStack.top(), .opacity = context->opacityStack.top(), .hasAlpha = imageItem->image().hasAlphaChannel(), - .coordinateType = NormalizedCoordinates, + .coordinateType = UnnormalizedCoordinates, .colorDescription = item->colorDescription(), .renderingIntent = item->renderingIntent(), .bufferReleasePoint = nullptr,