diff --git a/src/game/Game_local.cpp b/src/game/Game_local.cpp
index f35dccf..dfab9f4 100644
--- a/src/game/Game_local.cpp
+++ b/src/game/Game_local.cpp
@@ -3409,11 +3409,17 @@ void idGameLocal::CacheDictionaryMedia( const idDict *dict ) {
 			
 			TIME_THIS_SCOPE( __FUNCLINE__);
 			
 			MEM_SCOPED_TAG(tag,MA_MATERIAL);
-			if ( RememberMapMediaPrecache( "material", kv->GetValue() ) ) {
+			idStr materialName = kv->GetValue();
+			if ( materialName.Length() > 0
+				&& !kv->GetKey().Icmp( "mtr_blob" )
+				&& !materialName.Icmp( "genericdamage" ) ) {
+				materialName = va( "textures/decals/%s", materialName.c_str() );
+			}
+			if ( RememberMapMediaPrecache( "material", materialName.c_str() ) ) {
 				continue;
 			}
-			declManager->FindType( DECL_MATERIAL, kv->GetValue() );
+			declManager->FindType( DECL_MATERIAL, materialName.c_str() );
 		} else if ( MATCH( "screenShot" ) ) {
 		
 			TIME_THIS_SCOPE( __FUNCLINE__);
diff --git a/src/game/PlayerView.cpp b/src/game/PlayerView.cpp
index bfe7f87..b075777 100644
--- a/src/game/PlayerView.cpp
+++ b/src/game/PlayerView.cpp
@@ -348,10 +348,19 @@ void idPlayerView::DamageImpulse( idVec3 localKickDir, const idDict *damageDef, c
 
 		const char *materialName = configuredBlobMaterial;
 
+		const bool bareMaterialName = materialName[0]
+			&& strchr( materialName, '/' ) == NULL
+			&& strchr( materialName, '\\' ) == NULL;
 		const idMaterial *blobMaterial = NULL;
 		if ( materialName[0] ) {
 			blobMaterial = declManager->FindMaterial( materialName, false );
-			if ( blobMaterial == NULL && strchr( materialName, '/' ) == NULL && strchr( materialName, '\\' ) == NULL ) {
+			if ( bareMaterialName
+				&& !idStr::Icmp( materialName, "genericdamage" )
+				&& blobMaterial != NULL
+				&& ( blobMaterial->IsImplicit() || blobMaterial->TestMaterialFlag( MF_DEFAULTED ) ) ) {
+				blobMaterial = NULL;
+			}
+			if ( blobMaterial == NULL && bareMaterialName ) {
 				const idStr materialPath = va( "textures/decals/%s", materialName );
 				blobMaterial = declManager->FindMaterial( materialPath, false );
 			}
diff --git a/src/mpgame/Game_local.cpp b/src/mpgame/Game_local.cpp
index c370dfc..cc4b782 100644
--- a/src/mpgame/Game_local.cpp
+++ b/src/mpgame/Game_local.cpp
@@ -3176,11 +3176,17 @@ void idGameLocal::CacheDictionaryMedia( const idDict *dict ) {
 			
 			TIME_THIS_SCOPE( __FUNCLINE__);
 			
 			MEM_SCOPED_TAG(tag,MA_MATERIAL);
-			if ( RememberMapMediaPrecache( "material", kv->GetValue() ) ) {
+			idStr materialName = kv->GetValue();
+			if ( materialName.Length() > 0
+				&& !kv->GetKey().Icmp( "mtr_blob" )
+				&& !materialName.Icmp( "genericdamage" ) ) {
+				materialName = va( "textures/decals/%s", materialName.c_str() );
+			}
+			if ( RememberMapMediaPrecache( "material", materialName.c_str() ) ) {
 				continue;
 			}
-			declManager->FindType( DECL_MATERIAL, kv->GetValue() );
+			declManager->FindType( DECL_MATERIAL, materialName.c_str() );
 		} else if ( MATCH( "screenShot" ) ) {
 		
 			TIME_THIS_SCOPE( __FUNCLINE__);
diff --git a/src/mpgame/PlayerView.cpp b/src/mpgame/PlayerView.cpp
index 7e70d68..8f276a2 100644
--- a/src/mpgame/PlayerView.cpp
+++ b/src/mpgame/PlayerView.cpp
@@ -387,10 +387,19 @@ void idPlayerView::DamageImpulse( idVec3 localKickDir, const idDict *damageDef, c
 
 		const char *materialName = configuredBlobMaterial;
 
+		const bool bareMaterialName = materialName[0]
+			&& strchr( materialName, '/' ) == NULL
+			&& strchr( materialName, '\\' ) == NULL;
 		const idMaterial *blobMaterial = NULL;
 		if ( materialName[0] ) {
 			blobMaterial = declManager->FindMaterial( materialName, false );
-			if ( blobMaterial == NULL && strchr( materialName, '/' ) == NULL && strchr( materialName, '\\' ) == NULL ) {
+			if ( bareMaterialName
+				&& !idStr::Icmp( materialName, "genericdamage" )
+				&& blobMaterial != NULL
+				&& ( blobMaterial->IsImplicit() || blobMaterial->TestMaterialFlag( MF_DEFAULTED ) ) ) {
+				blobMaterial = NULL;
+			}
+			if ( blobMaterial == NULL && bareMaterialName ) {
 				const idStr materialPath = va( "textures/decals/%s", materialName );
 				blobMaterial = declManager->FindMaterial( materialPath, false );
 			}
