diff --git a/krita/image/brushengine/kis_paintop.cc b/krita/image/brushengine/kis_paintop.cc index fbf03dc68addc5331c9e5982869c4a10d02119b9..7c853f173b7701832e9214ef1fed3ba18a46c931 100644 --- a/krita/image/brushengine/kis_paintop.cc +++ b/krita/image/brushengine/kis_paintop.cc @@ -104,15 +104,8 @@ void KisPaintOp::setFanCornersInfo(bool fanCornersEnabled, qreal fanCornersStep) void KisPaintOp::splitCoordinate(qreal coordinate, qint32 *whole, qreal *fraction) { - qint32 i = static_cast(coordinate); - - if (coordinate < 0) { - // We always want the fractional part to be positive. - // E.g. -1.25 becomes -2 and +0.75 - i--; - } - - qreal f = coordinate - i; + const qint32 i = std::floor(coordinate); + const qreal f = coordinate - i; *whole = i; *fraction = f; diff --git a/krita/plugins/paintops/libpaintop/kis_dab_cache.cpp b/krita/plugins/paintops/libpaintop/kis_dab_cache.cpp index f2370e723e1d2cc3c7f48456eacd78e221074fb6..628e9a0cda7fec9f23bf76da3984fc22ee17f007 100644 --- a/krita/plugins/paintops/libpaintop/kis_dab_cache.cpp +++ b/krita/plugins/paintops/libpaintop/kis_dab_cache.cpp @@ -252,8 +252,8 @@ KisFixedPaintDeviceSP KisDabCache::tryFetchFromCache(const SavedDabParameters &p } qreal positiveFraction(qreal x) { - int unused; - qreal fraction; + qint32 unused = 0; + qreal fraction = 0.0; KisPaintOp::splitCoordinate(x, &unused, &fraction); return fraction; @@ -267,8 +267,8 @@ KisDabCache::calculateDabRect(const QPointF &cursorPoint, const KisPaintInformation& info, const MirrorProperties &mirrorProperties) { - int x, y; - qreal subPixelX, subPixelY; + qint32 x = 0, y = 0; + qreal subPixelX = 0.0, subPixelY = 0.0; if (mirrorProperties.coordinateSystemFlipped) { angle = 2 * M_PI - angle; @@ -296,13 +296,13 @@ KisDabCache::calculateDabRect(const QPointF &cursorPoint, if (mirrorProperties.horizontalMirror) { subPixelX = positiveFraction(-(cursorPoint.x() + hotSpot.x())); width = m_d->brush->maskWidth(scaleX, angle, subPixelX, subPixelY, info); - x = cursorPoint.x() + subPixelX + hotSpot.x() - width; + x = qRound(cursorPoint.x() + subPixelX + hotSpot.x()) - width; } if (mirrorProperties.verticalMirror) { subPixelY = positiveFraction(-(cursorPoint.y() + hotSpot.y())); height = m_d->brush->maskHeight(scaleY, angle, subPixelX, subPixelY, info); - y = cursorPoint.y() + subPixelY + hotSpot.y() - height; + y = qRound(cursorPoint.y() + subPixelY + hotSpot.y()) - height; } return DabPosition(QRect(x, y, width, height),