Moving footprint with Ctrl-M + Arrow Keys doesn't move exactly by X, Y as specified in grid settings

Steps to reproduce

  1. Place footprint on PCB, not in multiples of the 100 mils grid
  2. Calculate difference between footprint coordinates and multiples of 100 mils grid (in my example, 0.156 mm)
  3. Create grid with x and y of 0.156 mm
  4. Select previously created grid
  5. Select footprint
  6. Press Ctrl-M to move the footprint
  7. Press arrow key once to move it into multiple of 100 mils grid
  8. Observe the changed coordinates

Expected Behaviour

The footprint moves, for each press of the arrow key, by the grid spacing (e.g., 0.156 mm per key press in my example).

Actual Behaviour

Footprint before moving (see grid and x position):

image

Press Ctrl-M to move it. Press arrow right key once.

The calculated position should be 89.484 + 0.156 = 89.64. In reality, however, the position is 89.635986 mm.

image

KiCad Version

Application: KiCad PCB Editor arm64 on arm64

Version: 9.0.7, release build

Libraries:
	wxWidgets 3.2.8
	FreeType 2.13.3
	HarfBuzz 10.1.0
	FontConfig 2.15.0
	libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.64.0

Platform: macOS Sequoia Version 15.7.3 (Build 24G419), 64 bit, Little endian, wxMac
OpenGL: Apple, Apple M1 Max, 2.1 Metal - 89.4

Build Info:
	Date: Jan  1 2026 21:36:00
	wxWidgets: 3.2.8 (wchar_t,wx containers)
	Boost: 1.87.0
	OCC: 7.8.1
	Curl: 8.7.1
	ngspice: 44.2
	Compiler: Clang 16.0.0 with C++ ABI 1002
	KICAD_IPC_API=ON