How to get canvas bounds in world space.

I am trying to make a strategy game with a responsive map that stretches with the UI.

I have a basic algorithm to distribute buildings, and it works fine when I use a Sprite object for the map; because the SpriteRenderer.bounds are in world space.
The Sprite is not responsive, so I replaced it with a Canvas and UI Image. But now the distribution makes the buildings way off (numbers like -9564, -3040, -3200 !!)

RectTransform canvas = MapCanvas; //GetWorldRect(MapCanvas,;
Vector3 canvas_size = canvas.sizeDelta;
Vector3 canvas_center = canvas.position;
Bounds canvas_bound = Rend.bounds;	// new Bounds(canvas_center, canvas_size);

Replacing the above with this produces the crazy results.

Rect canvas = GetWorldRect(MapCanvas,;
    Vector3 canvas_size = canvas.size;
    Vector3 canvas_center = canvas.position;
    Bounds canvas_bound = new Bounds(canvas_center, canvas_size);

Here is the implementation of GetWorldRect

public static Rect GetWorldRect(RectTransform rt, Vector2 scale)
		Vector3[] corners = new Vector3[4];
		Vector3 topLeft = corners[0];
		Vector2 scaledSize = new Vector2(scale.x * rt.rect.size.x, scale.y * rt.rect.size.y);
		return new Rect(topLeft, scaledSize);

Thank you.

Found what I needed here: