How to set Instantiate position bound by parent's location

I am attempting to have a tile map generate and display on screen. However, whenever I attempt to Instantiate a given tile, instead of spawning the object within the bounds of the display area (a Viewport, in this case), the tiles spawn offset from 0,0 world position, rather than the Top-left corner of the display area.

The exact line of code that spawns the tiles is:

Instantiate(tile, new Vector3(x * scale, -1 * (y * scale), 0), Quaternion.identity, parent.transform);

Where “tile” is the actual map tile that I want shown, “x” and “y” are the coordinates of the tile, and parent is the Viewport’s Transform, found with:

parent = GameObject.FindGameObjectWithTag("Map Display").GetComponent<Transform>();

The code as written gives me the following output:126809-actual.png

Whereas the output I want is:126810-ideal.png

What am I doing wrong/how do I fix this?

Have you tried using cameraToWorldMatrix?