$ git clone http://gcodetool.ion.nu/gcodetool.git
commit 3d24068f9d64114abb4f44937a69ae43efd38d24
Author: Alicia <...>
Date:   Mon Oct 7 17:46:35 2019 +0200

    Handle G92 better in the 'info' and 'preview' subcommands.

diff --git a/info.c b/info.c
index d450b3d..27e700e 100644
--- a/info.c
+++ b/info.c
@@ -68,6 +68,7 @@ int gtool_info(const char* filename)
   unsigned int tooltempcount=0;
   double* bedtemps=0;
   unsigned int bedtempcount=0;
+  double eoffset=0;
   // Loop through gcode and analyze commands
   while((cmd=gcode_readcommand(gcode)))
   {
@@ -131,7 +132,15 @@ int gtool_info(const char* filename)
       if(!isnan(xval)){x.last=xval;}
       if(!isnan(yval)){y.last=yval;}
       if(!isnan(zval)){z.last=zval;}
-      if(!isnan(eval)){e.last=eval;}
+      if(!isnan(eval))
+      {
+        if(!isnan(e.last))
+        {
+          eoffset+=e.last-eval;
+          e.max=eval;
+        }
+        e.last=eval;
+      }
     }
     else if(cmd->key=='M' && (cmd->num==140 || cmd->num==190 || cmd->num==104 || cmd->num==109))
     {
@@ -177,7 +186,7 @@ int gtool_info(const char* filename)
   printf("Retraction length: %.*fmm\n", pd(-retraction.min));
   printf("Un-retraction length: %.*fmm\n", pd(retraction.max));
   printf("Number of retractions: %u\n", retractcount);
-  printf("Filament use: %.*fmm\n", pd(e.max-e.min));
+  printf("Filament use: %.*fmm\n", pd(e.max-e.min+eoffset));
   printf("Retraction speed: %.*fmm/s - %.*fmm/s\n", pd(retractspeed.min/60), pd(retractspeed.max/60));
   printf("Print speed: %.*fmm/s - %.*fmm/s\n", pd(printspeed.min/60), pd(printspeed.max/60));
   printf("Travel speed: %.*fmm/s - %.*fmm/s\n", pd(travelspeed.min/60), pd(travelspeed.max/60));
diff --git a/preview.c b/preview.c
index bfa9f81..e2402ef 100644
--- a/preview.c
+++ b/preview.c
@@ -113,6 +113,11 @@ int gtool_preview(const char* filename, struct img* img, double angle, double zr
       if(isnan(min[1]) || yval<min[1]){min[1]=yval;}
       if(isnan(min[2]) || zval<min[2]){min[2]=zval;}
     }
+    if(cmd->key=='G' && cmd->num==92)
+    {
+      double eval=gcommand_getparam(cmd, 'E');
+      if(!isnan(eval)){olde=eval;}
+    }
   }
   gcode_free(gcode);
   double center[]={(min[0]+max[0])/2, (min[1]+max[1])/2};