diff --git a/unix/x0vncserver/PollingManager.cxx b/unix/x0vncserver/PollingManager.cxx
index ad6ac42..4d7221a 100644
--- a/unix/x0vncserver/PollingManager.cxx
+++ b/unix/x0vncserver/PollingManager.cxx
@@ -76,9 +76,14 @@
   // underlying class names are different from the class name of the
   // primary image.
   m_rowImage = factory->newImage(m_dpy, m_width, 1);
-  if (strcmp(m_image->className(), m_rowImage->className()) != 0) {
-    vlog.error("Image types do not match (%s)",
-               m_rowImage->className());
+  m_columnImage = factory->newImage(m_dpy, 1, m_height);
+  const char *primaryImgClass = m_image->className();
+  const char *rowImgClass = m_rowImage->className();
+  const char *columnImgClass = m_columnImage->className();
+  if (strcmp(rowImgClass, primaryImgClass) != 0 ||
+      strcmp(columnImgClass, primaryImgClass) != 0) {
+    vlog.error("Image types do not match (%s, %s, %s)",
+               primaryImgClass, rowImgClass, columnImgClass);
   }
 
   int numTiles = m_widthTiles * m_heightTiles;
@@ -94,6 +99,7 @@
   delete[] m_rateMatrix;
 
   delete m_rowImage;
+  delete m_columnImage;
 }
 
 //
diff --git a/unix/x0vncserver/PollingManager.h b/unix/x0vncserver/PollingManager.h
index fd2c2e0..70c3d4c 100644
--- a/unix/x0vncserver/PollingManager.h
+++ b/unix/x0vncserver/PollingManager.h
@@ -93,8 +93,8 @@
   }
 
   inline void getColumn(int x, int y, int h) {
-    m_rowImage->get(DefaultRootWindow(m_dpy),
-                    m_offsetLeft + x, m_offsetTop + y, 1, h);
+    m_columnImage->get(DefaultRootWindow(m_dpy),
+                       m_offsetLeft + x, m_offsetTop + y, 1, h);
   }
 
   int checkRow(int x, int y, int w, bool *pChangeFlags);
@@ -110,7 +110,8 @@
   void findMaxLocalRect(Rect *r, int *mx_h, int *mx_v);
 
   // Additional images used in polling algorithms.
-  Image *m_rowImage;            // One row of the framebuffer
+  Image *m_rowImage;            // one row of the framebuffer
+  Image *m_columnImage;         // one column of the framebuffer
 
   char *m_rateMatrix;
   char *m_videoFlags;
