The coordinates at the center of pixel [0, 0] should be [0, 0]. When looking at a tiny image, hovering over the pixels and looking at the value in the status bar, it is clear that the cursor coordinates are offset by 0.5 along each axis relative to the image:




import numpy as np
import napari
import napari.util
image = np.array([[0, 0, 0, 1],
[0, 0, 1, 1],
[1, 0, 0, 0],
[0, 1, 0, 0]], dtype=float)
with napari.util.app_context():
napari.view(image, multichannel=False) # check that the intensity matches the cursor pos
With nearest-neighbor / no interpolation, the cursor should display the coordinates of the nearest pixel and the value should be what is displayed under the cursor.
We had some debates about whether to offset by 0.5 or not. I think there are many reasons why the centers of pixels should be at integer coordinates. My two leading ones are:
Sounds reasonable, I can look into fixing this and making sure it has no unintended consequences for the markers and shapes layer, where we're already doing some 0.5 offsetting
Note how this appears in matplotlib. We will want to align with this convention across all our layer types.

Note: I agree very much about the alignment of voxels and points, but not about the order of axes — plt.scatter(2.3, 0.3) will put the dot on the top right instead of the bottom left.