Bug 514871 - [regression] Canvas runs off when click+hold very zoomed in (ex. when doing pixel art operations)
Summary: [regression] Canvas runs off when click+hold very zoomed in (ex. when doing p...
Status: REPORTED
Alias: None
Product: krita
Classification: Applications
Component: Tools (other bugs)
Version First Reported In: git master (please specify the git hash!)
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: regression, release_blocker
Depends on:
Blocks:
 
Reported: 2026-01-20 17:14 UTC by Tiar
Modified: 2026-01-21 01:31 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tiar 2026-01-20 17:14:13 UTC
Canvas runs off when you zoom in the canvas and click and hold in the rectangle tool, line tool, rectangular selection tool, gradient tool, bezier curves tool, and probably many others. (It even runs off if you click and hold the polygonal selection tool though it's not how you're supposed to use it). It makes many tools completely unusable in those conditions, and it's a regression.

I believe it's related to the warnings we now see in the console about the offsets.
That warning happens only once/twice per opening Krita but I noticed weirdness about pixel art operations roughly around the time that warning started to show up in my console.

"The imageRectInWidgetPixels topLeft() does not match the documentOffsetF!
    imageRectInWidgetPixels: QRectF(-0.6,-0.6 0x0)
    documentOffsetF: QPointF(1,1)
Dialog "krita/generators/seexpr" has a widget without an object name: QScrollBar(0x5e0e79d37ef0)
Dialog "krita/generators/seexpr" has a widget without an object name: QScrollBar(0x5e0e6a886d60)
Dialog "krita/generators/seexpr" has a widget without an objectName: QScrollBar(0x5e0e79d37ef0)
Dialog "krita/generators/seexpr" has a widget without an objectName: QScrollBar(0x5e0e6a886d60)
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::setWorldTransform: Painter not active
The imageRectInWidgetPixels topLeft() does not match the documentOffsetF!
    imageRectInWidgetPixels: QRectF(-0.6,-0.6 0x0)
    documentOffsetF: QPointF(1,1)
    corrected offset: QPointF(-1757,-208)"

SUMMARY


STEPS TO REPRODUCE
1. Create a 2000x2000 (or 200x200, or any other) canvas
2. Zoom in enough to see the pixel grid, one pixel should be around 0.5-1cm on your screen (comfortable zoom for pixel art) (it's around 4000% on 2000x2000 canvas)
3. Try to create a rectangle of size 5x5 using the Rectangle Tool

OBSERVED RESULT
Canvas runs off and you can't make any precise rectangle.

EXPECTED RESULT
You can make a precise rectangle.

SOFTWARE/OS VERSIONS
git master: e8631b83ba

Krita

 Version: 5.3.0-prealpha (git 249e1df)
 Hidpi: true

Qt

  Version (compiled): 5.15.7
  Version (loaded): 5.15.7

OS Information

  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: linux
  Kernel Version: 6.5.0-45-generic
  Pretty Productname: Ubuntu 20.04.6 LTS
  Product Type: ubuntu
  Product Version: 20.04
  Desktop: 
  Appimage build: Yes

Locale

  Languages: en_US, en, en_Latn_US
  C locale: en_US.UTF-8
  QLocale current: en
  QLocale system: en
  QTextCodec for locale: UTF-8

OpenGL Info
 
  Qt Platform Name:  "xcb" 
  Vendor:  "Mesa/X.org" 
  Renderer:  "llvmpipe (LLVM 12.0.0, 256 bits)" 
  Driver version:  "4.5 (Core Profile) Mesa 21.2.6" 
  Shading language:  "4.50" 
  Requested format:  QSurfaceFormat(version 3.3, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::CompatibilityProfile) 
  Current format:  QSurfaceFormat(version 4.5, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::CoreProfile) 
  GL version: 4.5 
  Supports deprecated functions false 
  Is OpenGL ES: false 
  supportsBufferMapping: true 
  supportsBufferInvalidation: true 
  forceDisableTextureBuffers: false
Comment 1 Tiar 2026-01-21 01:31:17 UTC
It's caused by b89e641c9f3b63f98827dddde25b82a2a1b10147, which was merged as part of https://invent.kde.org/graphics/krita/-/merge_requests/2423 .