Correct WorldToScreenPoint??

So i’m having trouble using WorldToScreenPoint and most posts about this relate to OnGUI (where ive gotten this to work correctly). It seems when i give a world space position to this code, it comes out like… off… almost like the depth is incorrect… Can someone clue me in to what im doing wrong here?

heres my code:

    function setScreenPosition(wspos:Vector3){
        // imagine currentCamera is the actual game camera
        // each button is: Obj with Canvas -> Obj with Rect Transform - > Obj with Image -> Obj with Text
        //  baseTransform is the Obj with Rect Transform
        Debug.Log("finding 2d pos for: "+wspos);
        var screenPos:Vector3 = currentCamera.WorldToScreenPoint(wspos);
        var screenPos2d:Vector2 = Vector2(screenPos.x,screenPos.y);
        baseTransform.anchoredPosition = screenPos2d;

    }

heres a video of the problem:

https://vimeo.com/126741647

What am i fucking up here?

Ok this is weird… i can get this to work correctly by doing this:

var screenPos:Vector3 = Game.CameraManager.currentCamera.WorldToScreenPoint(wspos);
var screenPos2d:Vector2 = Vector2(screenPos.x*3.0,( screenPos.y*3.0 )-170 );

why does this work? that button’s width and height is set to 20, which makes me think -150 is actually correct then i add the height of that button… but why do i need to multiply by 3? wtf?

this works when changing sizes aswell… what are these magic numbers!!!

You can check out similar scaling problems i was gaving here…