Question about OnPointerUp

Hi,
I have a question about the OnPointerUp event.
I am making an inventory system and im trying to make the objects drag and dropable in the itemslots.
I have 1 on the item slot aswell as on the selected item object.
First i used the OnPointerClick event which worked perfect.
But i decided i rather want to use OnPointerDown and OnPointerUp so that it drags and drops with one mouse click and one release, but now the item gets snapped back to the spot where i picked it up instead of where i released the mouse button.
I wouldve thought that OnPointerUp gets called where you actually release the button not where you first pressed it down.
Is it supposed to work like this and I have to use the drag events or am i missing something else.
Here my script for reference:

    public void OnPointerDown(PointerEventData eventData)
    {
        if(this.item != null)
        {
            if(selectedItem.item != null)
            {
                Item clone = new Item(selectedItem.item);
                selectedItem.UpdateItem(this.item);
                UpdateItem(clone);
            }
            else
            {
                selectedItem.UpdateItem(this.item);
                UpdateItem(null);
            }
        }
    }
    public void OnPointerUp(PointerEventData eventData)
    {
        if(selectedItem.item != null)
        {
            UpdateItem(selectedItem.item);
            selectedItem.UpdateItem(null);
        }
    }

PS : The update funtions to change the images on the slot aswell as on the selected item

public void UpdateItem(Item item)
    {
        this.item = item;
        if(this.item != null)
        {
            spriteImage.color = Color.white;
            spriteImage.sprite = this.item.icon;
        }
        else
        {
            spriteImage.color = Color.clear;
        }
    }

Also the item follows the cursor just fine with another script where i just set the position to the cursor in the update function