From c2c3389f84873b60bad4c00a5c76716ef4e0a979 Mon Sep 17 00:00:00 2001 From: Igor Zinken <730069+igorski@users.noreply.github.com> Date: Sat, 15 Mar 2025 06:43:41 +0100 Subject: [PATCH] More appropriate calculation for rendering blended layer bitmaps --- src/rendering/canvas-elements/layer-sprite.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/rendering/canvas-elements/layer-sprite.ts b/src/rendering/canvas-elements/layer-sprite.ts index e40e02b..877e669 100644 --- a/src/rendering/canvas-elements/layer-sprite.ts +++ b/src/rendering/canvas-elements/layer-sprite.ts @@ -36,6 +36,7 @@ import { LayerTypes } from "@/definitions/layer-types"; import ToolTypes, { canDrawOnSelection, TOOL_SRC_MERGED } from "@/definitions/tool-types"; import { scaleRectangle, rotateRectangle } from "@/math/rectangle-math"; import { translatePointerRotation, rotatePointer } from "@/math/point-math"; +import { fastRound } from "@/math/unit-math"; import { renderEffectsForLayer } from "@/services/render-service"; import { getBlendContext, blendLayer, hasBlend } from "@/rendering/blending"; import { clipContextToSelection } from "@/rendering/clipping"; @@ -692,7 +693,11 @@ export default class LayerSprite extends ZoomableSprite { bitmap = createSyncSnapshot( document, getBlendableLayers()); cacheBlendedLayer( layerIndex, bitmap ); } - documentContext.drawImage( bitmap, -viewport.left, -viewport.top, document.width, document.height ); + const pixelRatio = getPixelRatio(); + documentContext.drawImage( + bitmap, -fastRound( viewport.left ), -fastRound( viewport.top ), + fastRound( bitmap.width / pixelRatio ), fastRound( bitmap.height / pixelRatio ) + ); renderedFromCache = true; } }