I often like to browse image results by clicking into the first image and using the next/previous actions (swipe on mobile, left/right arrows on desktop) to quickly flip through the results, rather than trying to look at the comparatively tiny thumbnails in the grid view. The issue is that on mobile (and on desktop if the images are primarily vertical (e.g. searching for "Robert De Niro portraits")) the next/previous action moves by column first, rather than by row. This is super counter-intuitive and makes it a lot harder to use this feature as I quickly get away from the most relevant images without even realizing it. For example, on my phone if I want to flip through the first 20 images I have to tap into the left column, swipe 10 times, then close out, go back to the top, and repeat the process for the right column.
I would expect that the next/previous actions (whether swipe on mobile or arrow keys on desktop) would always move "left and right" (i.e. horizontally in the results list), only moving vertically down when the current row is exhausted.
Effectively the algorithm I am expecting, both for laying out the image results and for navigating through them, is as follows (accurately but extremely inefficiently described below, where x is horizontal and y is vertical):
currentImage := the image the user currently has selected
searchPos := top-left corner of currentImage (double-leading edge for intl.)
searchPos.y += 1
while searchPos.y < total height:
while searchPos.x < total width:
if searchPos matches the top-left corner of an image:
currentImage := matched image
return;
else
searchPos.x += 1
searchPos.x = 0
searchPos.y += 1
Or in plain language, start at the current image in the grid and go across, wrapping at the edge of the grid, until you find the next image in "normal reading order".
Here is a markup of how I would expect navigation to work on the aforementioned "Robert De Niro portraits" search:

Alternately you could do what Google does and always show results horizontally. It would result in some "wasted space" on the image screen, but at least it would be a consistent navigation ordering! Or even better, make it an option so those of us who want to (like me) can choose to make that tradeoff.