bool operator==(const wxBitmap& bitmap) const { return m_refData == bitmap.m_refData; }
     bool operator!=(const wxBitmap& bitmap) const { return m_refData != bitmap.m_refData; }
 
-    // this function is internal and shouldn't be used, it risks to disappear
+    // these functions are internal and shouldn't be used, they risk to
+    // disappear in the future
     bool HasAlpha() const;
+    void UseAlpha();
 
 #if WXWIN_COMPATIBILITY_2_4
     // these functions do nothing and are only there for backwards
 
         m_bmp.UngetRawData(this);
     }
 
+    // call this to indicate that we should use the alpha channel
+    void UseAlpha() { m_bmp.UseAlpha(); }
+
     // accessors
     unsigned char *GetPixels() const { return m_pixels; }
     int GetWidth() const { return m_width; }
 
             return;
         }
 
+        data.UseAlpha();
+
         wxRawBitmapIterator p(data);
 
         p.Offset(BORDER, BORDER);
 
 
 #endif // WXWIN_COMPATIBILITY_2_4
 
+void wxBitmap::UseAlpha()
+{
+    if ( GetBitmapData() )
+        GetBitmapData()->m_hasAlpha = true;
+}
+
 bool wxBitmap::HasAlpha() const
 {
     return GetBitmapData() && GetBitmapData()->m_hasAlpha;