Positioning UI to part in viewport frame

Hello, I am working on a viewport map system. I am trying to position a UI element to a part INSIDE viewport frame. I tried using :WorldToScreenPoint() and :WorldToViewportPoint(), but neither can position a UI element to be relative to a ViewportFrame.

Here is my code and a video:

-- Services

local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")

-- Variables
local Player = game:GetService("Players").LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild('Humanoid')

local ViewportFrame = script.Parent.Background.ViewportFrame
local WorldModel = ViewportFrame.WorldModel
local ViewportCamera = Instance.new("Camera", ViewportFrame)
local ViewportPart = game.Workspace.ViewportPart
local mouse = Player:GetMouse()
local ViewportRaycastModule = require(script.ViewportRaycastModule)

ViewportCamera.Name = "VPCamera"
ViewportFrame.CurrentCamera = ViewportCamera

local DragToggle = nil
local DragSpeed = .5
local DragStart = nil
local startpos = nil
local InsideFrame = nil

local Map = workspace.Map:Clone()
Map.Parent = ViewportFrame.WorldModel

local ScreenSize = ViewportCamera.ViewportSize

RunService.RenderStepped:Connect(function()
	ViewportCamera.CFrame = ViewportPart.CFrame
	
	local worldPoint = workspace.Keypoint.Position
	local vector, onScreen = ViewportCamera:WorldToViewportPoint(worldPoint)

	local screenPoint = Vector2.new(vector.X, vector.Y)
	local depth = vector.Z

	ViewportFrame.Keypoint.Position = UDim2.new(vector.X, 0, vector.Y, 0) 

end)