diff --git a/CMakeLists.txt b/CMakeLists.txt
index 43142386d71e50928176a1c48f0c937cbdb6aa51..3ce321e20c087d5fe8ba9418acb2a87bff966fd2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.0)
 # DO NOT CHANGE THIS SRB2 STRING! Some variable names depend on this string.
 # Version change is fine.
 project(SRB2
-	VERSION 1.0.2
+	VERSION 1.0.4
 	LANGUAGES C)
 
 if(${PROJECT_SOURCE_DIR} MATCHES ${PROJECT_BINARY_DIR})
diff --git a/appveyor.yml b/appveyor.yml
index e7ce1b2f7eb98a5affb80917096b616b8cca5218..10b658918392895b7b4f9626dfbabf34e54d3e6d 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,4 +1,4 @@
-version: 1.0.2.{branch}-{build}
+version: 1.0.4.{branch}-{build}
 os: MinGW
 
 environment:
@@ -29,7 +29,7 @@ environment:
  ##############################
  DPL_ENABLED: 0
  DPL_TAG_ENABLED: 0
- DPL_INSTALLER_NAME: srb2kart-v102
+ DPL_INSTALLER_NAME: srb2kart-v104
  # Asset handling is barebones vs. Travis Deployer. We operate on 7z only.
  # Include the README files and the OpenGL batch in the main and patch archives.
  # The x86/x64 archives contain the DLL binaries.
diff --git a/src/config.h.in b/src/config.h.in
index a1f5d0a6e16e88c0065afddcdf7409d2c1e85246..0b66305c4e45808a566b0e6b8839aa33ab80cd76 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -37,7 +37,7 @@
  * Last updated 2015 / 05 / 03 - SRB2 v2.1.15 - srb2.srb
  * Last updated 2018 / 12 / 23 - SRB2 v2.1.22 - patch.dta
  * Last updated 2019 / 01 / 18 - Kart v1.0.2 - Main assets
- * Last updated 2019 / 02 / 04 - Kart v1.0.3 - patch.kart
+ * Last updated 2019 / 03 / 11 - Kart v1.0.4 - patch.kart
  */
 
 // Base SRB2 hashes
@@ -52,7 +52,7 @@
 #define ASSET_HASH_CHARS_KART    "e2c428347dde52858a3dacd29fc5b964"
 #define ASSET_HASH_MAPS_KART     "1335cd064656aedca359cfbb5233ac4a"
 #ifdef USE_PATCH_KART
-#define ASSET_HASH_PATCH_KART    "e06c1c90e5645c886026311964f8e1f5"
+#define ASSET_HASH_PATCH_KART    "440dd7b1e5c3ba27a727fed616f9c362"
 #endif
 
 #endif
diff --git a/src/doomdef.h b/src/doomdef.h
index d841b9cd382136fef60da1b61a5bcff3ff720c6d..6664ff51a41de52d0a7be5d064f42865e527d3fa 100644
--- a/src/doomdef.h
+++ b/src/doomdef.h
@@ -150,9 +150,9 @@ extern FILE *logstream;
 // we use comprevision and compbranch instead.
 #else
 #define VERSION    100 // Game version
-#define SUBVERSION 3 // more precise version number
-#define VERSIONSTRING "v1.0.3"
-#define VERSIONSTRINGW L"v1.0.3"
+#define SUBVERSION 4 // more precise version number
+#define VERSIONSTRING "v1.0.4"
+#define VERSIONSTRINGW L"v1.0.4"
 // Hey! If you change this, add 1 to the MODVERSION below!
 // Otherwise we can't force updates!
 #endif
@@ -221,7 +221,7 @@ extern FILE *logstream;
 // it's only for detection of the version the player is using so the MS can alert them of an update.
 // Only set it higher, not lower, obviously.
 // Note that we use this to help keep internal testing in check; this is why v2.1.0 is not version "1".
-#define MODVERSION 3
+#define MODVERSION 4
 
 // Filter consvars by version
 // To version config.cfg, MAJOREXECVERSION is set equal to MODVERSION automatically.