diff --git a/gui/gui/src/TRootCanvas.cxx b/gui/gui/src/TRootCanvas.cxx
index 9be0e60862d55f4a5bfefafc6781d018dadf216b..e873c011f4b728d60f01eb5737c5db74c96bc279 100644
--- a/gui/gui/src/TRootCanvas.cxx
+++ b/gui/gui/src/TRootCanvas.cxx
@@ -1754,31 +1754,33 @@ Bool_t TRootCanvas::HandleContainerKey(Event_t *event)
 
       // handle arrow keys
       if (keysym > 0x1011 && keysym < 0x1016) {
-         Int_t ix, iy;
+         Window_t dum1, dum2, wid;
+         UInt_t mask = 0;
+         Int_t mx, my;
          EEventType etype = kNoEvent;
-         Handle_t wid = gClient->GetDefaultRoot()->GetId();
-         gVirtualX->QueryPointer(ix, iy);
+         wid = gVirtualX->GetDefaultRootWindow();
+         gVirtualX->QueryPointer(wid, dum1, dum2, mx, my, mx, my, mask);
          switch (keysym) {
             case 0x1012: // left
                etype = kKeyArrowLeft;
-               gVirtualX->Warp(--ix, iy, wid);
+               gVirtualX->Warp(--mx, my, wid);
                break;
             case 0x1013: // up
                etype = kKeyArrowLeft;
-               gVirtualX->Warp(ix, --iy, wid);
+               gVirtualX->Warp(mx, --my, wid);
                break;
             case 0x1014: // right
                etype = kKeyArrowLeft;
-               gVirtualX->Warp(++ix, iy, wid);
+               gVirtualX->Warp(++mx, my, wid);
                break;
             case 0x1015: // down
                etype = kKeyArrowLeft;
-               gVirtualX->Warp(ix, ++iy, wid);
+               gVirtualX->Warp(mx, ++my, wid);
                break;
             default:
                break;
          }
-         fCanvas->HandleInput(etype, ix, iy);
+         fCanvas->HandleInput(etype, mx, my);
       }
       else {
          fCanvas->HandleInput(kKeyPress, str[0], keysym);
diff --git a/gui/gui/src/TRootEmbeddedCanvas.cxx b/gui/gui/src/TRootEmbeddedCanvas.cxx
index b1f833b75b7860a98a95685ef1a8943eede11659..d1ad907d0a0b63a3ea64e8298e1fc08aeea25e67 100644
--- a/gui/gui/src/TRootEmbeddedCanvas.cxx
+++ b/gui/gui/src/TRootEmbeddedCanvas.cxx
@@ -290,31 +290,33 @@ Bool_t TRootEmbeddedCanvas::HandleContainerKey(Event_t *event)
 
       // handle arrow keys
       if (keysym > 0x1011 && keysym < 0x1016) {
-         Int_t ix, iy;
+         Window_t dum1, dum2, wid;
+         UInt_t mask = 0;
+         Int_t mx, my;
          EEventType etype = kNoEvent;
-         Handle_t wid = gClient->GetDefaultRoot()->GetId();
-         gVirtualX->QueryPointer(ix, iy);
+         wid = gVirtualX->GetDefaultRootWindow();
+         gVirtualX->QueryPointer(wid, dum1, dum2, mx, my, mx, my, mask);
          switch (keysym) {
             case 0x1012: // left
                etype = kKeyArrowLeft;
-               gVirtualX->Warp(--ix, iy, wid);
+               gVirtualX->Warp(--mx, my, wid);
                break;
             case 0x1013: // up
                etype = kKeyArrowLeft;
-               gVirtualX->Warp(ix, --iy, wid);
+               gVirtualX->Warp(mx, --my, wid);
                break;
             case 0x1014: // right
                etype = kKeyArrowLeft;
-               gVirtualX->Warp(++ix, iy, wid);
+               gVirtualX->Warp(++mx, my, wid);
                break;
             case 0x1015: // down
                etype = kKeyArrowLeft;
-               gVirtualX->Warp(ix, ++iy, wid);
+               gVirtualX->Warp(mx, ++my, wid);
                break;
             default:
                break;
          }
-         fCanvas->HandleInput(etype, ix, iy);
+         fCanvas->HandleInput(etype, mx, my);
       }
       else {
          fCanvas->HandleInput(kKeyPress, str[0], keysym);