diff --git a/newgrf.c b/newgrf.c
index eb942a913f..cdebe68f10 100644
--- a/newgrf.c
+++ b/newgrf.c
@@ -2950,13 +2950,13 @@ static void GRFInhibit(byte *buf, int len)
 
 	for (i = 0; i < num; i++) {
 		uint32 grfid = grf_load_dword(&buf);
-		GRFFile *file = GetFileByGRFID(grfid);
+		GRFConfig *file = GetGRFConfig(grfid);
 
 		/* Unset activation flag */
 		if (file != NULL) {
 			grfmsg(GMS_NOTICE, "GRFInhibit: Deactivating file ``%s''", file->filename);
-			SETBIT(_cur_grfconfig->flags, GCF_DISABLED);
-			CLRBIT(_cur_grfconfig->flags, GCF_ACTIVATED);
+			SETBIT(file->flags, GCF_DISABLED);
+			CLRBIT(file->flags, GCF_ACTIVATED);
 		}
 	}
 }
diff --git a/newgrf_config.c b/newgrf_config.c
index ef607c2b87..7299be4fee 100644
--- a/newgrf_config.c
+++ b/newgrf_config.c
@@ -266,7 +266,7 @@ const GRFConfig *FindGRFConfig(uint32 grfid, uint8 *md5sum)
 
 
 /* Retrieve a NewGRF from the current config by its grfid */
-const GRFConfig *GetGRFConfig(uint32 grfid)
+GRFConfig *GetGRFConfig(uint32 grfid)
 {
 	GRFConfig *c;
 
diff --git a/newgrf_config.h b/newgrf_config.h
index cb490ebad8..2cee7429bf 100644
--- a/newgrf_config.h
+++ b/newgrf_config.h
@@ -41,7 +41,7 @@ extern GRFConfig *_grfconfig_static;
 
 void ScanNewGRFFiles(void);
 const GRFConfig *FindGRFConfig(uint32 grfid, uint8 *md5sum);
-const GRFConfig *GetGRFConfig(uint32 grfid);
+GRFConfig *GetGRFConfig(uint32 grfid);
 void ClearGRFConfig(GRFConfig *config);
 void ClearGRFConfigList(GRFConfig *config);
 void ResetGRFConfig(bool defaults);