What you need to do is invert the Y values in the For..Next loop when you transfer them to the matrix - not before.
Leave the 2D X/Y co-ordinate system as it is - as you suggest, if you change it, you'll have problems later...
Refer to the following snippet which does more or less the thing you are after. It textures a matrix with a single image and the For..Next loop has to place the top left corner tile of the image in the bottom left corner of the matrix.
Rem How to apply a single image to a matrix by TDK_Man March 2003
Sync On
CLS 0
Set Camera Range 1.0, 200000.0
Hide Mouse
Make Matrix 1,10000,10000,70,70
Load Image "image1.jpg",1
Prepare Matrix Texture 1,1,70,70
Position Camera 5000,8000,-1000
Point camera 5000,0,5000
t=1
For z=69 to 0 Step -1
For x=0 to 69
Set Matrix Tile 1,x,z,t
Inc t
Next x
Next z
Update Matrix 1
Do
CX#=Camera Angle X(): CY#=Camera Angle Y(): CZ#=Camera Angle Z()
CX#=Wrapvalue(CX#+mousemovey()): CY#=Wrapvalue(CY#+mousemovex())
Rotate Camera CX#,CY#,CZ#
Rem Use left mouse button to move forwards
If MouseClick()=1
GH#=Get Ground Height(1,Camera Position x(), Camera Position z() )
Move Camera 40
If camera position y()<GH#+150.0
Position Camera Camera Position X(),GH#+150.0,Camera Position z()
Endif
Endif
Rem Use right mouse button to move backwards
If MouseClick()=2
GH#=Get Ground Height(1,Camera Position x(), Camera Position z() )
Move Camera -40
If camera position y()<gh#+150.0
Position Camera Camera Position X(),gh#+150.0,Camera Position z()
Endif
Endif
Sync
Loop
TDK_Man