diff --git a/scene.cpp b/scene.cpp --- a/scene.cpp +++ b/scene.cpp @@ -898,23 +898,25 @@ Qt::Horizontal, // Bottom }; + const qreal halfPixel = effects->isOpenGLCompositing() ? 0.5 : 0; + for (int i = 0; i < 4; i++) { const QRegion intersectedRegion = (region & rects[i]); for (const QRect &r : intersectedRegion) { if (!r.isValid()) continue; const bool swap = orientations[i] == Qt::Vertical; - const int x0 = r.x(); - const int y0 = r.y(); - const int x1 = r.x() + r.width(); - const int y1 = r.y() + r.height(); + const qreal x0 = r.x(); + const qreal y0 = r.y(); + const qreal x1 = r.x() + r.width(); + const qreal y1 = r.y() + r.height(); - const int u0 = (x0 + offsets[i].x()) * textureScale; - const int v0 = (y0 + offsets[i].y()) * textureScale; - const int u1 = (x1 + offsets[i].x()) * textureScale; - const int v1 = (y1 + offsets[i].y()) * textureScale; + const qreal u0 = (x0 + offsets[i].x()) * textureScale + halfPixel; + const qreal v0 = (y0 + offsets[i].y()) * textureScale + halfPixel; + const qreal u1 = (x1 + offsets[i].x()) * textureScale - halfPixel; + const qreal v1 = (y1 + offsets[i].y()) * textureScale - halfPixel; WindowQuad quad(WindowQuadDecoration); quad.setUVAxisSwapped(swap); @@ -956,6 +958,7 @@ ret.append(quad); } + return ret; }