diff --git a/Runtime/GeoTiffHeight.cs b/Runtime/GeoTiffHeight.cs
index d26cfd816100453a2ca53b2c0067ed4825895e38..d2ba49fe90bc1fcb1a5d3f2a192888c4c0bc5357 100644
--- a/Runtime/GeoTiffHeight.cs
+++ b/Runtime/GeoTiffHeight.cs
@@ -5,6 +5,7 @@ using System.IO;
 using System.Threading.Tasks;
 using UnityEngine;
 using UnityEngine.Networking;
+using UnityEngine.Windows;
 
 namespace Wander
 {
@@ -67,7 +68,7 @@ namespace Wander
 
         public bool IsFinished()
         {
-            if (finished)
+            if (finished || asyncOp == null)
                 return true;
 
             // Still in progress
@@ -137,7 +138,9 @@ namespace Wander
 
         public static string BuildPDOKWCSUrl( float rdMinX, float rdMaxX, float rdMinY, float rdMaxY, int resWidth = 1024, int resHeight = 1024 )
         {
-            string url = $"https://service.pdok.nl/rws/ahn3/wcs/v1_0?SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&coverage=ahn3_05m_dtm&CRS=EPSG:28992&BBOX={rdMinX},{rdMinX},{rdMaxX},{rdMaxY}&WIDTH={resWidth}&HEIGHT={resHeight}&FORMAT=image/tiff&interpolation=average";
+            //&interpolation=average
+            string url = $"https://service.pdok.nl/rws/ahn3/wcs/v1_0?SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&coverage=ahn3_05m_dtm&CRS=EPSG:28992&BBOX={rdMinX},{rdMinY},{rdMaxX},{rdMaxY}&WIDTH={resWidth}&HEIGHT={resHeight}&FORMAT=image/tiff&interpolation=average";
+            //string url = $"https://service.pdok.nl/rws/ahn3/wcs/v1_0?SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&coverage=ahn3_05m_dtm&CRS=EPSG:28992&BBOX={rdMinX},{rdMinY},{rdMaxX},{rdMaxY}&WIDTH={resWidth}&HEIGHT={resHeight}&FORMAT=GeoTIFF_FLOAT32";
             return url;
         }
 
@@ -205,16 +208,6 @@ namespace Wander
                     throw new InvalidDataException( "Tiff data not valid" );
                 }
 
-                width  = tiff.GetField( TiffTag.IMAGEWIDTH )[0].ToInt();
-                height = tiff.GetField( TiffTag.IMAGELENGTH )[0].ToInt();
-                int tileSize     = tiff.TileSize();
-                var tile_width_field = tiff.GetField( TiffTag.TILEWIDTH );
-                var tile_length_field = tiff.GetField( TiffTag.TILELENGTH );
-                int tile_width   = tileSize;// tile_width_field[0].ToInt();
-                int tile_height  = tileSize;// tile_length_field[0].ToInt();
-                
-                byte [] tileData = new byte[tileSize];
-
                 // Obtain coords
                 {
                     FieldValue[] modelPixelScaleTag = tiff.GetField((TiffTag)33550);
@@ -229,11 +222,19 @@ namespace Wander
                     originY = BitConverter.ToDouble( modelTransformation, 32 );
                 }
 
-                // output
-                output = new float[width*height];
-                for (int row = 0;row < height;row += tile_height)
+                
+                width  = tiff.GetField( TiffTag.IMAGEWIDTH )[0].ToInt();
+                height = tiff.GetField( TiffTag.IMAGELENGTH )[0].ToInt();
+                output  = new float[width*height];
+                int tileSize = tiff.TileSize();
+
+                if (tiff.IsTiled())
                 {
-                    for (int col = 0;col < width;col += tile_width)
+                    byte [] tileData = new byte[tileSize];
+                    int tile_width   = tiff.GetField( TiffTag.TILEWIDTH )[0].ToInt();
+                    int tile_height  = tiff.GetField( TiffTag.TILELENGTH )[0].ToInt();
+
+                    for (int row = 0;row < height;row += tile_height) for (int col = 0;col < width;col += tile_width)
                     {
                         // Read the tile into an RGBA array
                         int res = tiff.ReadTile( tileData, 0, col, row, 0, 0 );
@@ -257,6 +258,19 @@ namespace Wander
                         }
                     }
                 }
+                else
+                {
+                    int samplesPerPixel = tiff.GetField(TiffTag.SAMPLESPERPIXEL)[0].ToInt();
+                    int bitsPerSample   = tiff.GetField(TiffTag.BITSPERSAMPLE)[0].ToInt();
+                    Debug.Assert( samplesPerPixel == 1 && bitsPerSample == 32, "Expecting 32-bit floating point texture. Others are not handled." );
+                    int scanlineSize = tiff.ScanlineSize();
+                    byte [] scanline = new byte[scanlineSize];
+                    for (int i = 0;i < height;++i)
+                    {
+                        tiff.ReadScanline( scanline, i );
+                        Buffer.BlockCopy( scanline, 0, output, i*width*4, scanlineSize );
+                    }
+                }
             }
 
             return output;