diff --git a/common/rfb/ScaledPixelBuffer.cxx b/common/rfb/ScaledPixelBuffer.cxx
index bf4612d..5892a97 100644
--- a/common/rfb/ScaledPixelBuffer.cxx
+++ b/common/rfb/ScaledPixelBuffer.cxx
@@ -18,6 +18,7 @@
 
 // -=- ScaledPixelBuffer.cxx
 
+#include <rfb/Exception.h>
 #include <rfb/ScaledPixelBuffer.h>
 
 #include <math.h>
@@ -27,15 +28,16 @@
 using namespace rfb;
 
 ScaledPixelBuffer::ScaledPixelBuffer(U8 **src_data_, int src_width_,
-                                     int src_height_, int scale)
-  : bpp(32), scaled_data(0), scale_ratio(1), scale(100) {
+                                     int src_height_, int scale, PixelFormat pf_)
+  : scaled_data(0), scale_ratio(1), scale(100) {
 
   setSourceBuffer(src_data_, src_width_, src_height_);
+  setPF(pf_);
 }
 
 ScaledPixelBuffer::ScaledPixelBuffer() 
   : src_data(0), src_width(0), src_height(0), scale_ratio(1), scale(100),
-    bpp(32), scaled_data(0) {
+    pf(PixelFormat(32,24,0,1,255,255,255,0,8,16)), scaled_data(0) {
 }
 
 ScaledPixelBuffer::~ScaledPixelBuffer() {
@@ -46,7 +48,13 @@
   src_width  = w;
   src_height = h;
   calculateScaledBufferSize();
-  recreateScaledBuffer();
+}
+
+void ScaledPixelBuffer::setPF(const PixelFormat &pf_) {
+  if (pf_.depth != 24) {
+    throw rfb::Exception("rfb::ScaledPixelBuffer support only the true colour pixel format.");
+  }
+  pf = pf_;
 }
 
 void ScaledPixelBuffer::setScale(int scale_) {
@@ -54,7 +62,6 @@
     scale = scale_;
     scale_ratio = double(scale) / 100;
     calculateScaledBufferSize();
-    recreateScaledBuffer();
   }
 }
 
@@ -127,6 +134,3 @@
   scaled_width  = (int)ceil(src_width  * scale_ratio);
   scaled_height = (int)ceil(src_height * scale_ratio);
 }
-
-void ScaledPixelBuffer::recreateScaledBuffer() {
-}
