--- /dev/null
+From e013fd7c2f49b40a1b482d712d531329d538da88 Mon Sep 17 00:00:00 2001
+From: Brian Matherly <code@brianmatherly.com>
+Date: Wed, 31 Jan 2018 20:57:42 -0600
+Subject: [PATCH] Fix segmentation fault when using qimage png producer #296
+
+---
+ src/modules/qt/qimage_wrapper.cpp | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/modules/qt/qimage_wrapper.cpp b/src/modules/qt/qimage_wrapper.cpp
+index 436f65d15..99b4ebf8e 100644
+--- a/src/modules/qt/qimage_wrapper.cpp
++++ b/src/modules/qt/qimage_wrapper.cpp
+@@ -229,18 +229,19 @@ void refresh_image( producer_qimage self, mlt_frame frame, mlt_image_format form
+ QString interps = mlt_properties_get( properties, "rescale.interp" );
+ bool interp = ( interps != "nearest" ) && ( interps != "none" );
+ QImage *qimage = static_cast<QImage*>( self->qimage );
++ int has_alpha = qimage->hasAlphaChannel();
++ QImage::Format qimageFormat = has_alpha ? QImage::Format_ARGB32 : QImage::Format_RGB32;
+
+ // Note - the original qimage is already safe and ready for destruction
+- if ( qimage->depth() == 1 )
++ if ( qimage->format() != qimageFormat )
+ {
+- QImage temp = qimage->convertToFormat( QImage::Format_RGB32 );
++ QImage temp = qimage->convertToFormat( qimageFormat );
+ delete qimage;
+ qimage = new QImage( temp );
+ self->qimage = qimage;
+ }
+ QImage scaled = interp? qimage->scaled( QSize( width, height ) ) :
+ qimage->scaled( QSize(width, height), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
+- int has_alpha = scaled.hasAlphaChannel();
+
+ // Store width and height
+ self->current_width = width;