Android: Como arrastar (mover) PopupWindow?

Quero poder mover o PopupWindow ao arrastar por toque. Não quero que a interface do usuário seja atualizada no lançamento do toque. Quero que o PopupWindow siga meu toque.

Isso é o que estou fazendo:

mView = mLayoutInflater.inflate(R.layout.popup,
                null);
mPopupWindow = new PopupWindow(mView,
               LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false);
mPopupWindow.showAtLocation(parentView, Gravity.CENTER, -5, 30);

mView.setOnTouchListener(new OnTouchListener() {
        private int dx = 0;
        private int dy = 0;

        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    dx = (int) motionEvent.getX();
                    dy = (int) motionEvent.getY();
                    break;
                case MotionEvent.ACTION_MOVE:
                    int x = (int) motionEvent.getX();
                    int y = (int) motionEvent.getY();
                    int left =  (x - dx);
                    int top =   (y - dy);
                    Log.d("test", "x: " + left + " y: " + top);
                    mPopupWindow.update(left, top, -1, -1);
                    break;
            }
            return true;
        }
    });

O que acontece é que, ao arrastar a janela pop-up, ela pisca para frente e para trás no local original e onde está o meu ded

Resultado do Logcat intermitente:

x: -44 y: 4
x: -43 y: 37
x: -46 y: 4
x: -46 y: 38
x: -48 y: 4
x: -47 y: 38
x: -50 y: 4

Mas se eu remover (comentar) "mPopupWindow.update (left, top, -1, -1);", ele retorna o resultado correto. (Mas, obviamente, a interface do usuário não será atualizada):

x: -33 y: 0
x: -37 y: 0
x: -41 y: 0
x: -43 y: 3
x: -46 y: 3
x: -50 y: 3
x: -54 y: 4
x: -57 y: 4

Como moveria um PopupWindow corretamente?