Handles acting weirdly. Can't get them to work

I’m attempting to make a customization system, however the problem is that they aren’t acting as they should. Does anyone have a solution?

local SurfaceAxis = {
    [Enum.NormalId.Top] = Vector3.new(0, 1, 0),
    [Enum.NormalId.Bottom] = Vector3.new(0, -1, 0),
    [Enum.NormalId.Front] = Vector3.new(0, 0, -1),
    [Enum.NormalId.Back] = Vector3.new(0, 0, 1),
    [Enum.NormalId.Left] = Vector3.new(1, 0, 0),
    [Enum.NormalId.Right] = Vector3.new(-1, 0, 0)

}

        local Handles = Instance.new("Handles", Player:WaitForChild("PlayerGui"))
        Handles.Adornee = Accessory.Value:WaitForChild("Handle")
        Handles.Style = Enum.HandlesStyle.Movement
        
        local MoveVector

        Handles.MouseDrag:Connect(function(Face, Distance)
            if WeldMove == "Move" then
                local Delta = Distance - OldDelta

                if math.abs(Delta * 1.125) >= Snap then
                    local Direction = SurfaceAxis[Face]

                    Delta = math.round(Delta / Snap) * Snap
                    MoveVector = CFrame.new(-Direction * Delta)
                    
                --    Remote:FireServer("ApplyCFrame", MoveVector, Accessory.Value)

                    OldDelta = Distance

                end
            end
        end)

        Handles.MouseButton1Up:Connect(function()
            OldDelta = 0
            
            Remote:FireServer("ApplyCFrame", MoveVector, Accessory.Value)

        end)

Here’s what I’m sure is the main part of the code that doesn’t work. If anyone has any solutions please help. For what it’s doing wrong, I think this explains itself.

The axis on the handles are messed up and don’t work half of the time. Forward goes right, right goes forward, back goes up, etc. Except the problem is that each hat has a different axis, so it’s different on each accessory.

I’ve attempted to switch the axis as a last ditch effort, but as stated, it’s all different on other accessories so it doesn’t exactly work.