diff -pruN 0.10-2/debian/changelog 0.11-1/debian/changelog
--- 0.10-2/debian/changelog	2022-04-06 22:04:17.000000000 +0000
+++ 0.11-1/debian/changelog	2022-08-03 19:08:59.000000000 +0000
@@ -1,3 +1,9 @@
+gl-image-display (0.11-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Dima Kogan <dkogan@debian.org>  Wed, 03 Aug 2022 12:08:59 -0700
+
 gl-image-display (0.10-2) unstable; urgency=medium
 
   * Fixed incorrect debian/copyright attribution
diff -pruN 0.10-2/Fl_Gl_Image_Widget.i 0.11-1/Fl_Gl_Image_Widget.i
--- 0.10-2/Fl_Gl_Image_Widget.i	2022-03-25 21:01:59.000000000 +0000
+++ 0.11-1/Fl_Gl_Image_Widget.i	2022-08-03 19:01:06.000000000 +0000
@@ -301,14 +301,11 @@ image dimensions MUST match those given
 
 The data may be passed-in to this method in one of two ways:
 
-- decimation_level: optional integer, defaulting to 0. Specifies the resolution
-  of the displayed image.
+- image_filename: the image is read from a file on disk, with the given
+  filename. image_data must be None
 
-- image_filename is not None: the image is read from a file on disk, with the
-  given filename. image_data must be None
-
-- image_data is not None: the image data is read from the given numpy array.
-  image_filename must be None
+- image_data: the image data is read from the given numpy array. image_filename
+  must be None
 
 An exception is raised on error
 
@@ -317,8 +314,14 @@ ARGUMENTS
 - image_filename: optional string, specifying the filename containing the image
   to display. Exclusive with image_data
 
-- image_data: optional numpy array with the data being displayed. Exclusive with
-  image_filename
+- image_data: optional numpy array containing the data being displayed. Must
+  have dtype=np.uint8. Exclusive with image_filename. The array shape is either
+
+  - (height,width) to pass a grayscale image
+  - (height,width,3) to pass a BGR color image
+
+- decimation_level: optional integer, defaulting to 0. Specifies the resolution
+  of the displayed image.
  """;
 
 %typemap(in, numinputs=0) (double* xout, double* yout) (double xout_temp, double yout_temp) {
diff -pruN 0.10-2/GL_image_display.c 0.11-1/GL_image_display.c
--- 0.10-2/GL_image_display.c	2022-03-25 21:01:59.000000000 +0000
+++ 0.11-1/GL_image_display.c	2022-08-03 19:01:06.000000000 +0000
@@ -385,6 +385,37 @@ bool GL_image_display_update_image__vali
     return result;
 }
 
+
+#define CONFIRM_SET(what) if(!ctx->what) { return false; }
+
+static
+bool set_aspect(GL_image_display_context_t* ctx,
+                int viewport_width,
+                int viewport_height)
+{
+    CONFIRM_SET(did_init);
+
+    // I scale the dimensions to keep the displayed aspect ratio square and to
+    // not cut off any part of the image
+    if( viewport_width*ctx->image_height < ctx->image_width*viewport_height )
+    {
+        ctx->aspect_x = 1.0;
+        ctx->aspect_y = (double)(viewport_width*ctx->image_height) / (double)(viewport_height*ctx->image_width);
+    }
+    else
+    {
+        ctx->aspect_x = (double)(viewport_height*ctx->image_width) / (double)(viewport_width*ctx->image_height);
+        ctx->aspect_y = 1.0;
+    }
+
+    set_uniform_2f(ctx, aspect,
+                   (float)ctx->aspect_x, (float)ctx->aspect_y);
+
+    ctx->did_set_aspect = true;
+
+    return true;
+}
+
 bool GL_image_display_update_image( GL_image_display_context_t* ctx,
                                     int decimation_level,
 
@@ -556,7 +587,7 @@ bool GL_image_display_update_image( GL_i
         // this
         GLint viewport_xywh[4];
         glGetIntegerv(GL_VIEWPORT, viewport_xywh);
-        if(!GL_image_display_resize_viewport(ctx, viewport_xywh[2], viewport_xywh[3]))
+        if(!set_aspect(ctx, viewport_xywh[2], viewport_xywh[3]))
             goto done;
     }
     else
@@ -671,14 +702,11 @@ void GL_image_display_deinit( GL_image_d
     }
 }
 
-#define CONFIRM_SET(what) if(!ctx->what) { return false; }
-
 bool GL_image_display_resize_viewport(GL_image_display_context_t* ctx,
                                       int viewport_width,
                                       int viewport_height)
 {
     CONFIRM_SET(did_init);
-    CONFIRM_SET(did_init_texture);
 
     if(ctx->use_glut)
     {
@@ -692,23 +720,9 @@ bool GL_image_display_resize_viewport(GL
 
     glViewport(0, 0,
                viewport_width, viewport_height);
+    if(ctx->did_init_texture)
+        return set_aspect(ctx, viewport_width, viewport_height);
 
-    // I scale the dimensions to keep the displayed aspect ratio square and to
-    // not cut off any part of the image
-    if( viewport_width*ctx->image_height < ctx->image_width*viewport_height )
-    {
-        ctx->aspect_x = 1.0;
-        ctx->aspect_y = (double)(viewport_width*ctx->image_height) / (double)(viewport_height*ctx->image_width);
-    }
-    else
-    {
-        ctx->aspect_x = (double)(viewport_height*ctx->image_width) / (double)(viewport_width*ctx->image_height);
-        ctx->aspect_y = 1.0;
-    }
-    set_uniform_2f(ctx, aspect,
-                   (float)ctx->aspect_x, (float)ctx->aspect_y);
-
-    ctx->did_set_aspect = true;
     return true;
 }
 
