diff --git a/client_src/js/Config.mjs b/client_src/js/Config.mjs
index 99d8497..0545f89 100644
--- a/client_src/js/Config.mjs
+++ b/client_src/js/Config.mjs
@@ -8,9 +8,8 @@ export default {
 	// The default zoom level to use when loading the page.
 	default_zoom: 12,
 	
-	// The size, in metres, of the blobs on the heatmap.
-	heatmap_blob_size: 5000,
-	
-	heatmap_opacity: 0.75,
-	heatmap_alpha_range: 0.5
+	heatmap: {
+		// The radius fo blobs on the heatmap
+		blob_radius: 0.02
+	}
 }
diff --git a/client_src/js/LayerHeatmap.mjs b/client_src/js/LayerHeatmap.mjs
index 66ce656..27f0b01 100644
--- a/client_src/js/LayerHeatmap.mjs
+++ b/client_src/js/LayerHeatmap.mjs
@@ -1,8 +1,6 @@
 "use strict";
 
-import L from 'leaflet';
-import 'leaflet-webgl-heatmap';
-import '../../lib/webgl-heatmap/webgl-heatmap.js'; // Someone didn't define this as a dependency. I'm looking at you, leaflet-webgl-heatmap.....
+import HeatmapOverlay from 'leaflet-heatmap';
 
 import Config from './Config.mjs';
 
@@ -11,24 +9,25 @@ class LayerHeatmap {
 	constructor(in_map) {
 		this.map = in_map;
 		
-		this.layer = new L.webGLHeatmap({
-			size: Config.heatmap_blob_size,
-			opacity: Config.heatmap_opacity,
-			alphaRange: Config.heatmap_alpha_range
+		this.layer = new HeatmapOverlay({
+			radius: Config.heatmap.blob_radius,
+			maxOpacity: 0.8,
+			scaleRadius: true,
+			useLocalExtrema: false,
+			
+			latField: "latitude",
+			lngField: "longitude",
+			valueField: "value"
 		});
-	}
-	
-	setup(initial_data) {
-		this.set_data(initial_data);
 		this.map.addLayer(this.layer);
 	}
 	
 	set_data(readings_list) {
-		this.layer.setData(readings_list.map((reading) => [
-			reading.latitude,
-			reading.longitude,
-			reading.value
-		]));
+		let data_object = {
+			max: readings_list.reduce((prev, next) => next.value > prev ? next.value : prev, 0),
+			data: readings_list
+		}
+		this.layer.setData(data_object);
 	}
 }
 
diff --git a/client_src/js/Map.mjs b/client_src/js/Map.mjs
index ec13429..a6d1398 100644
--- a/client_src/js/Map.mjs
+++ b/client_src/js/Map.mjs
@@ -56,7 +56,7 @@ class Map {
 		// TODO: Use leaflet-timedimension here
 		// TODO: Allow configuration of the different reading types here
 		
-		this.heatmap.setup(JSON.parse(await GetFromUrl(
+		this.heatmap.set_data(JSON.parse(await GetFromUrl(
 			`${Config.api_root}?action=fetch-data&datetime=2019-01-03 07:52:10&reading_type=PM10`
 		)));
 	}
diff --git a/package-lock.json b/package-lock.json
index 2714b80..8afab87 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -836,6 +836,12 @@
       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
       "dev": true
     },
+    "heatmap.js": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/heatmap.js/-/heatmap.js-2.0.5.tgz",
+      "integrity": "sha1-Rm07hlE/XUkRKknSVwCrJzAUkVM=",
+      "dev": true
+    },
     "html-comment-regex": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
@@ -1050,6 +1056,16 @@
       "resolved": "https://registry.npmjs.org/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz",
       "integrity": "sha1-CcYcS6xF9jsu4Sav2H5c2XZQ/Bs="
     },
+    "leaflet-heatmap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/leaflet-heatmap/-/leaflet-heatmap-1.0.0.tgz",
+      "integrity": "sha1-g8wEJJ057ZFSauqn12ab2qhtax8=",
+      "dev": true,
+      "requires": {
+        "heatmap.js": "*",
+        "leaflet": "*"
+      }
+    },
     "leaflet-timedimension": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/leaflet-timedimension/-/leaflet-timedimension-1.1.0.tgz",
@@ -1066,11 +1082,6 @@
         }
       }
     },
-    "leaflet-webgl-heatmap": {
-      "version": "0.2.7",
-      "resolved": "https://registry.npmjs.org/leaflet-webgl-heatmap/-/leaflet-webgl-heatmap-0.2.7.tgz",
-      "integrity": "sha1-mf+/8wrmgDb/4t3tgZjPf+2QSg8="
-    },
     "leaflet.markercluster": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/leaflet.markercluster/-/leaflet.markercluster-1.4.1.tgz",
diff --git a/package.json b/package.json
index 3f29ac2..a70bee8 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
   "devDependencies": {
     "@types/leaflet": "^1.2.14",
     "@types/leaflet-fullscreen": "^1.0.4",
+    "leaflet-heatmap": "^1.0.0",
     "postcss-import": "^12.0.1",
     "postcss-url": "^8.0.0",
     "rollup": "^1.1.0",
