diff --git a/flandmark/ext/ext.cpp b/flandmark/ext/ext.cpp
index 183b8b7cb4144bc7b7413e5f2add5415ab372991..282c8955d81f72099c08aae5ce2cd887854f8ea0 100644
--- a/flandmark/ext/ext.cpp
+++ b/flandmark/ext/ext.cpp
@@ -25,6 +25,7 @@ static void delete_flandmark(FLANDMARK_Model* o) {
 }
 
 static void delete_image(IplImage* i) {
+  i->imageData = 0; ///< never delete blitz::Array data
   cvReleaseImage(&i);
 }
 
@@ -73,9 +74,8 @@ class Localizer {
       }
 
       //converts to IplImage
-      const blitz::Array<uint8_t, 2> bz = input.bz<uint8_t,2>();
       boost::shared_ptr<IplImage> ipl_image(cvCreateImageHeader(cvSize(type.shape[1], type.shape[0]), IPL_DEPTH_8U, 1), std::ptr_fun(delete_image));
-      ipl_image->imageData = (char*)bz.data();
+      ipl_image->imageData = (char*)input.bz<uint8_t,2>().data();
 
       // Flags for OpenCV face detection
       CvSize minFeatureSize = cvSize(40, 40);
@@ -114,8 +114,6 @@ class Localizer {
         retval.append(det);
       }
 
-      ipl_image->imageData = 0;
-
       return tuple(retval);
 
     }