Menu is being instantiated down the tower

Good night! I am trying to instantiate a menu for my tower, but it is being placed down the tower. I want exactly placed on the middle of the tower. Does anyone can help me out?

void Update()
    {
        ray = Camera.main.ScreenToWorldPoint( Input.mousePosition );
        hit = Physics2D.Raycast( ray, Vector2.zero, Mathf.Infinity );
       
        if( Input.GetMouseButtonDown( 0 ) )
        {
            if( hit.collider != null )
            {
                //Pass the name of the collider's object to be instantiated.
                createTowerMenu( hit.transform.name, hit.transform.position );
            }
        }
    }

Inside the method createTowerMenu I instantiate the menu like this:

Instantiate( towerMenu, position, Quaternion.identity );

towerMenu is my prefab and position is hit.transform,position.

Put an empty game object in as a spawn point & instantiate the menu there. Keep adjusting the spawn point until the menu is instantiated in the right spot

Another problem is I am trying to click on one of the bottoms of the menu, but there is no collider in raycast when I click it.

That is the code:

void Update()
    {
        ray = Camera.main.ScreenToWorldPoint( Input.mousePosition );
        hit = Physics2D.Raycast( ray, Vector2.zero );
       
        if( Input.GetMouseButtonDown( 0 ) )
        {
            Debug.Log( hit.collider != null );

            if( hit.collider != null )
            {
                createSellUpgradeDestroyTower( hit.transform.name, hit.transform.position );
            }
        }
    }

Does someone can help me once?