How can I drag and drop from UI to regular object?

I have a Canvas with Graphics Raycaster and 2 images.
Each image has “draggable” script with code that allows drag/drop for UI objects.

draggable:

    public static GameObject itemDragged = null;

    public void OnBeginDrag (PointerEventData eventData)
    {
        draggable.itemDragged = gameObject;
    }
    public void OnDrag (PointerEventData eventData)
    {
        transform.position = eventData.position;
    }
    public void OnEndDrag (PointerEventData eventData)
    {
        draggable.itemDragged = null;
    }

In addition to that, there is a Main camera with Physics Raycaster attached to it and 3D Cube object.

Cube has a script that makes it rotate on pointer enter and stop rotating on pointer exit.
It also has code to change its color to whatever object is dropped on the cube.

The cube rotates correctly (So the Physics Raycaster is working), but the onDrop event does not fire. When cursor with dragged object enters Cube area it also doesn’t rotate.
I suspect this has something to do with different raycasters and some confusion between UI/3D, but can’t see why.

Cube code:

public class rotCube : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IDropHandler {
    private Transform myTransform;
    Vector3 angles = new Vector3(0, 1, 0);
    Renderer rnd;
    bool is_rotating = false;

    void Start () {
        myTransform = GetComponent<Transform> ();
        rnd = GetComponent<Renderer> ();
        rnd.material.color = Color.white;
    }
  

    void Update () {
        if (is_rotating)
            myTransform.Rotate (angles);
    }


    public void OnDrop (PointerEventData eventData)
    {
        GameObject go = draggable.itemDragged;
        rnd.material.color = go.GetComponent<Image> ().color;
    }


    public void OnPointerExit (PointerEventData eventData)
    {
        is_rotating = false;
    }


    public void OnPointerEnter (PointerEventData eventData)
    {
        is_rotating = true;
    }
}

Ah, so the problem was with the CanvasGroup.
Sigh.

public void OnBeginDrag (PointerEventData eventData)
    {
        draggable.itemDragged = gameObject;
        GetComponent<CanvasGroup> ().blocksRaycasts = false;
    }

    public void OnEndDrag (PointerEventData eventData)
    {
        draggable.itemDragged = null;
        transform.position = myPos;
        GetComponent<CanvasGroup> ().blocksRaycasts = true;
    }