diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
index 47bdd5a..306803f 100644
--- a/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx
@@ -66,7 +66,7 @@
     firstUpdate(true),
     delayedFullscreen(false), delayedDesktopSize(false),
     keyboardGrabbed(false), mouseGrabbed(false),
-    statsLastFrame(0), statsLastPixels(0), statsLastPosition(0),
+    statsLastUpdates(0), statsLastPixels(0), statsLastPosition(0),
     statsGraph(NULL)
 {
   Fl_Group* group;
@@ -1287,7 +1287,7 @@
 
   const size_t statsCount = sizeof(self->stats)/sizeof(self->stats[0]);
 
-  unsigned frame, pixels, pos;
+  unsigned updates, pixels, pos;
   unsigned elapsed;
 
   const unsigned statsWidth = 200;
@@ -1298,12 +1298,12 @@
   Fl_Image_Surface *surface;
   Fl_RGB_Image *image;
 
-  unsigned maxFPS, maxPPS, maxBPS;
+  unsigned maxUPS, maxPPS, maxBPS;
   size_t i;
 
   char buffer[256];
 
-  frame = self->cc->getFrameCount();
+  updates = self->cc->getUpdateCount();
   pixels = self->cc->getPixelCount();
   pos = self->cc->getPosition();
   elapsed = msSince(&self->statsLastTime);
@@ -1312,12 +1312,12 @@
 
   memmove(&self->stats[0], &self->stats[1], sizeof(self->stats[0])*(statsCount-1));
 
-  self->stats[statsCount-1].fps = (frame - self->statsLastFrame) * 1000 / elapsed;
+  self->stats[statsCount-1].ups = (updates - self->statsLastUpdates) * 1000 / elapsed;
   self->stats[statsCount-1].pps = (pixels - self->statsLastPixels) * 1000 / elapsed;
   self->stats[statsCount-1].bps = (pos - self->statsLastPosition) * 1000 / elapsed;
 
   gettimeofday(&self->statsLastTime, NULL);
-  self->statsLastFrame = frame;
+  self->statsLastUpdates = updates;
   self->statsLastPixels = pixels;
   self->statsLastPosition = pos;
 
@@ -1334,23 +1334,23 @@
 
   fl_rect(5, 5, graphWidth, graphHeight, FL_WHITE);
 
-  maxFPS = maxPPS = maxBPS = 0;
+  maxUPS = maxPPS = maxBPS = 0;
   for (i = 0;i < statsCount;i++) {
-    if (self->stats[i].fps > maxFPS)
-      maxFPS = self->stats[i].fps;
+    if (self->stats[i].ups > maxUPS)
+      maxUPS = self->stats[i].ups;
     if (self->stats[i].pps > maxPPS)
       maxPPS = self->stats[i].pps;
     if (self->stats[i].bps > maxBPS)
       maxBPS = self->stats[i].bps;
   }
 
-  if (maxFPS != 0) {
+  if (maxUPS != 0) {
     fl_color(FL_GREEN);
     for (i = 0;i < statsCount-1;i++) {
       fl_line(5 + i * graphWidth / statsCount,
-              5 + graphHeight - graphHeight * self->stats[i].fps / maxFPS,
+              5 + graphHeight - graphHeight * self->stats[i].ups / maxUPS,
               5 + (i+1) * graphWidth / statsCount,
-              5 + graphHeight - graphHeight * self->stats[i+1].fps / maxFPS);
+              5 + graphHeight - graphHeight * self->stats[i+1].ups / maxUPS);
     }
   }
 
@@ -1377,7 +1377,7 @@
   fl_font(FL_HELVETICA, 10);
 
   fl_color(FL_GREEN);
-  snprintf(buffer, sizeof(buffer), "%u fps", self->stats[statsCount-1].fps);
+  snprintf(buffer, sizeof(buffer), "%u upd/s", self->stats[statsCount-1].ups);
   fl_draw(buffer, 5, statsHeight - 5);
 
   fl_color(FL_YELLOW);
