diff --git a/demos/lowmem-anim.geo b/demos/lowmem-anim.geo
new file mode 100644
index 0000000000000000000000000000000000000000..af81e4273a74f48ba0307a572211d75b07077411
--- /dev/null
+++ b/demos/lowmem-anim.geo
@@ -0,0 +1,52 @@
+// Define some general options
+
+General.Trackball = 0; // use Euler angles
+General.RotationX = 30;
+General.RotationY = 10;
+General.RotationZ = -15;
+
+// One can use View.XXX instead of View[YYY].XXX to define general
+// View options!
+
+View.ShowElement = 1;
+View.ColorTable = {Red,Green,Blue};
+
+// Let's load the views one by one:
+
+For i In {1:4}
+
+  If (i==1)
+    // we force the bounding box to be the one of the first view:
+    MergeWithBoundingBox "../tutorial/view1.pos";
+  EndIf
+  If (i>1)
+    // we merge the other views using the same bounding box as the
+    // first one:
+    Merge Sprintf("../tutorial/view%g.pos",i);
+  EndIf
+
+  Draw;
+
+  Print Sprintf("out%g.png",i);
+
+  // and we delete the view:
+  Delete View[0];
+
+EndFor
+
+// Why do we have to play such a game with the bounding box? 
+
+// If you don't load a geometry or a mesh at the same time as the
+// views, the bounding box is only computed at the end of the loading
+// of the main model file (the .geo). This is because a view should
+// normally NOT affect the bounding box of a scene, except if the .geo
+// file is indeed a view... So, without the MergeWithBoundingBox, the
+// bounding box is indeed undefined (well, set to some stupid default
+// value) when we want to draw our views (since this happens before
+// the main file (the script) is completely read)...
+
+// One solution would be to define dummy geometry points in the
+// script. This is not general since we may not know beforehand the
+// bounding box of the view. The correct way to handle this is to use
+// MergeWithBounding box, which forces the computation of the bounding
+// box.