diff --git a/cucul/transform.c b/cucul/transform.c
index b668361..f017fd3 100644
--- a/cucul/transform.c
+++ b/cucul/transform.c
@@ -55,7 +55,9 @@ int cucul_invert(cucul_canvas_t *cv)
 /** \brief Flip a canvas horizontally.
  *
  *  Flip a canvas horizontally, choosing characters that look like the
- *  mirrored version wherever possible.
+ *  mirrored version wherever possible. Some characters will stay
+ *  unchanged by the process, but the operation is guaranteed to be
+ *  involutive: performing it again gives back the original canvas.
  *
  *  This function never fails.
  *
@@ -112,7 +114,9 @@ int cucul_flip(cucul_canvas_t *cv)
 /** \brief Flip a canvas vertically.
  *
  *  Flip a canvas vertically, choosing characters that look like the
- *  mirrored version wherever possible.
+ *  mirrored version wherever possible. Some characters will stay
+ *  unchanged by the process, but the operation is guaranteed to be
+ *  involutive: performing it again gives back the original canvas.
  *
  *  This function never fails.
  *
@@ -155,7 +159,10 @@ int cucul_flop(cucul_canvas_t *cv)
 /** \brief Rotate a canvas.
  *
  *  Apply a 180-degree transformation to a canvas, choosing characters
- *  that look like the upside-down version wherever possible.
+ *  that look like the upside-down version wherever possible. Some
+ *  characters will stay unchanged by the process, but the operation is
+ *  guaranteed to be involutive: performing it again gives back the
+ *  original canvas.
  *
  *  This function never fails.
  *
diff --git a/test/text.c b/test/text.c
index c2fe01a..e6fdce0 100644
--- a/test/text.c
+++ b/test/text.c
@@ -24,33 +24,41 @@
 #include "cucul.h"
 
 #define STRING \
-  "Hello world!\n" \
   "  _,----._  \n" \
   " (/ @  @ \\) \n" \
   "  |  OO  |  \n" \
   "  \\ `--' /  \n" \
-  "   `----'   \n"
+  "   `----'   \n" \
+  "Hello world!\n"
 
 int main(int argc, char *argv[])
 {
-    cucul_canvas_t *cv;
+    cucul_canvas_t *cv, *pig;
     void *buffer;
     unsigned long int len;
 
-    cv = cucul_create_canvas(0, 0);
+    pig = cucul_create_canvas(0, 0);
+    cucul_import_memory(pig, STRING, strlen(STRING), "text");
 
-    cucul_import_memory(cv, STRING, strlen(STRING), "text");
+    cv = cucul_create_canvas(cucul_get_canvas_width(pig) * 2,
+                             cucul_get_canvas_height(pig) * 2);
 
-    buffer = cucul_export_memory(cv, "utf8", &len);
-    fwrite(buffer, len, 1, stdout);
-    free(buffer);
-
-    cucul_rotate(cv);
+    cucul_blit(cv, 0, 0, pig, NULL);
+    cucul_flip(pig);
+    cucul_blit(cv, cucul_get_canvas_width(pig), 0, pig, NULL);
+    cucul_flip(pig);
+    cucul_flop(pig);
+    cucul_blit(cv, 0, cucul_get_canvas_height(pig), pig, NULL);
+    cucul_flop(pig);
+    cucul_rotate(pig);
+    cucul_blit(cv, cucul_get_canvas_width(pig),
+                   cucul_get_canvas_height(pig), pig, NULL);
 
     buffer = cucul_export_memory(cv, "utf8", &len);
     fwrite(buffer, len, 1, stdout);
     free(buffer);
 
+    cucul_free_canvas(pig);
     cucul_free_canvas(cv);
 
     return 0;