diff --git a/rfbplayer/rfbplayer.cxx b/rfbplayer/rfbplayer.cxx
index 855e402..ef64ba4 100644
--- a/rfbplayer/rfbplayer.cxx
+++ b/rfbplayer/rfbplayer.cxx
@@ -49,8 +49,12 @@
  "usage: rfbplayer <options> <filename>\n"
  "Command-line options:\n"
  "  -help         \t- Provide usage information.\n"
- "  -depth <bit>  \t- Forces the color depth for the session.\n"
- "                \t  Supports 8, 16 and 24 bit mode.\n"
+ "  -pf <mode>    \t- Forces the pixel format for the session.\n"
+ "                \t  List of the pixel formats:\n"
+ "                \t  0 - Auto,\n"
+ "                \t  1 - depth 8 (RGB332),\n"
+ "                \t  2 - depth 16 (RGB655),\n"
+ "                \t  3 - depth 24 (RGB888).\n"
  "  -speed <value>\t- Sets playback speed, where 1 is normal speed,\n"
  "                \t  is double speed, 0.5 is half speed. Default: 1.0.\n"
  "  -pos <ms>     \t- Sets initial time position in the session file,\n"
@@ -67,10 +71,11 @@
 #define DEFAULT_PLAYER_WIDTH 640
 #define DEFAULT_PLAYER_HEIGHT 480 
 
-#define DEPTH_AUTO 0
-#define DEPTH8_RGB332 8
-#define DEPTH16_RGB655 16
-#define DEPTH24_RGB888 24
+#define PF_AUTO 0
+#define PF_D8_RGB332 1
+#define PF_D16_RGB655 2
+#define PF_D24_RGB888 3
+#define PF_MODES 3
 
 #define ID_TOOLBAR 500
 #define ID_PLAY 510
@@ -218,10 +223,10 @@
 // -=- RfbPlayer instance implementation
 //
 
-RfbPlayer::RfbPlayer(char *_fileName, int _depth = DEPTH_AUTO, 
+RfbPlayer::RfbPlayer(char *_fileName, int _pixelFormat = PF_AUTO, 
                      long _initTime = 0, double _playbackSpeed = 1.0, 
                      bool _autoplay = false, bool _acceptBell = false)
-: RfbProto(_fileName), colourDepth(_depth), initTime(_initTime), 
+: RfbProto(_fileName), pixelFormat(_pixelFormat), initTime(_initTime), 
   playbackSpeed(_playbackSpeed), autoplay(_autoplay), buffer(0), 
   client_size(0, 0, 32, 32), window_size(0, 0, 32, 32), cutText(0), 
   seekMode(false), fileName(_fileName), lastPos(0), timeStatic(0), 
@@ -320,7 +325,7 @@
         ofn.lpstrDefExt = "rfb";
         ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
         if (GetOpenFileName(&ofn)) {
-          colourDepth = DEPTH_AUTO;
+          pixelFormat = PF_AUTO;
           openSessionFile(filename);
         }
       }
@@ -860,16 +865,16 @@
     throw rdr::Exception("This version plays only true color session!");
 
   // Set the session pixel format
-  switch (colourDepth) {
-  case DEPTH_AUTO: 
+  switch (pixelFormat) {
+  case PF_AUTO: 
     break;
-  case DEPTH8_RGB332: 
+  case PF_D8_RGB332: 
     cp.setPF(PixelFormat(8,8,0,1,7,7,3,0,3,6)); 
     break;
-  case DEPTH16_RGB655: 
+  case PF_D16_RGB655: 
     cp.setPF(PixelFormat(16,16,0,1,63,31,31,0,6,11)); 
     break;
-  case DEPTH24_RGB888: 
+  case PF_D24_RGB888: 
     cp.setPF(PixelFormat(32,24,0,1,255,255,255,16,8,0)); 
     break;
   default: 
@@ -1165,7 +1170,7 @@
 
 double playbackSpeed = 1.0;
 long initTime = -1;
-int depth = DEPTH_AUTO;
+int pf = PF_AUTO;
 bool autoplay = false;
 char *fileName = 0;
 bool print_usage = false;
@@ -1184,10 +1189,10 @@
       return true;
     }
 
-    if ((strcasecmp(argv[i], "-depth") == 0) ||
-        (strcasecmp(argv[i], "/depth") == 0) && (i < argc-1)) {
-      depth = atoi(argv[++i]);
-      if (depth < 0) {
+    if ((strcasecmp(argv[i], "-pf") == 0) ||
+        (strcasecmp(argv[i], "/pf") == 0) && (i < argc-1)) {
+      pf = atoi(argv[++i]);
+      if ((pf < 0) || (pf > PF_MODES)) {
         return false;
       }
       continue;
@@ -1254,7 +1259,7 @@
   // Create the player
   RfbPlayer *player = NULL;
   try {
-    player = new RfbPlayer(fileName, depth, initTime, playbackSpeed, autoplay, 
+    player = new RfbPlayer(fileName, pf, initTime, playbackSpeed, autoplay, 
                            acceptBell);
   } catch (rdr::Exception e) {
     MessageBox(NULL, e.str(), e.type(), MB_OK | MB_ICONERROR);
