Index: src/filter/scale0tilt/scale0tilt.c
===================================================================
--- src/filter/scale0tilt/scale0tilt.c	(revision fb31c32bb0c96aa19618d71f5f6efb3138efd265)
+++ src/filter/scale0tilt/scale0tilt.c	(revision a11a007e51d0276979d754aee4c24214abe9972b)
@@ -24,4 +24,6 @@
 #include <string.h>
 
+#define EPSILON 1e-6
+
 typedef struct scale0tilt_instance {
 	double cl, ct, cr, cb;
@@ -32,4 +34,5 @@
 	gavl_video_frame_t* frame_src;
 	gavl_video_frame_t* frame_dst;
+	int do_scale;
 } scale0tilt_instance_t;
 
@@ -38,5 +41,6 @@
 	float dst_x, dst_y, dst_w, dst_h;
 	float src_x, src_y, src_w, src_h;
-
+        
+	inst->do_scale = 1;
 	src_x = inst->w * inst->cl;
 	src_y = inst->h * inst->ct;
@@ -48,4 +52,10 @@
 	dst_w = inst->w * (1.0 - inst->cl - inst->cr) * inst->sx;
 	dst_h = inst->h * (1.0 - inst->ct - inst->cb) * inst->sy;
+
+	if((dst_w < EPSILON) || (dst_h < EPSILON) || 
+	   (src_w < EPSILON) || (src_h < EPSILON)) {
+		inst->do_scale = 0;
+		return;
+	}
 
 	if ( dst_x + dst_w > inst->w ) {
@@ -69,4 +79,11 @@
 		dst_y = 0;
 	}
+
+	if((dst_w < EPSILON) || (dst_h < EPSILON) ||
+	   (src_w < EPSILON) || (src_h < EPSILON)) {
+		inst->do_scale = 0;
+		return;
+	}
+
 	gavl_video_options_t* options = gavl_video_scaler_get_options( inst->video_scaler );
 
@@ -74,6 +91,6 @@
 	gavl_video_format_t format_dst;
 
-        memset(&format_src, 0, sizeof(format_src));
-        memset(&format_dst, 0, sizeof(format_dst));
+	memset(&format_src, 0, sizeof(format_src));
+	memset(&format_dst, 0, sizeof(format_dst));
 
 	format_dst.frame_width  = inst->w;
@@ -275,5 +292,6 @@
 		outframe[i] = 0;
 	}
-	gavl_video_scaler_scale( inst->video_scaler, inst->frame_src, inst->frame_dst );
-}
-
+	if(inst->do_scale)
+		gavl_video_scaler_scale( inst->video_scaler, inst->frame_src, inst->frame_dst );
+}
+
