When doing 3D2D, your scale determines your pixel:unit ratio.

So, let’s say we have a screen that looks like this:

╔═══════════╗

║███████████║

║███████████║

║███████████║

╚═══════════╝

We know two points on the model - the upper left, and the lower right. From these two points we can derive the upper right ( lr.x, lr.y, ul.z ) and the lower left ( ul.x, ul.y, lr.z ). From this, we can then “measure” the dimensions of the screen similar to this:

```
function GetScreenBounds( a, b, scale )
c = Vector( b.x, b.y, a.z )
d = Vector( a.x, a.y, b.z )
return a:Distance( c ) / scale, a:Distance( d ) / scale
end
```

We know the distance between the upper left and the lower left ( the height ) as well as the distance between the upper left and the upper right ( the width ). Since a larger scale indicates less pixels and a scale of 1 indicates each unit is a pixel, we need to divide by the scale - so .5 would give us a display twice the size as normal, and a scale of 2 would give us half the size as normal.

As for text color - your font probably has additive set to true - change it to false. It’s a really crappy image, but it should show what it sounds like is happening:

Black text would add nothing to the color behind it, making it appear transparent.