diff --git a/Generators/MadGraphControl/python/MadGraphUtils.py b/Generators/MadGraphControl/python/MadGraphUtils.py
index b55cd53b621188c420a517747a7627360ee6223b..68e4c81db4c5ffd0de4e69993c5238f02e10c668 100755
--- a/Generators/MadGraphControl/python/MadGraphUtils.py
+++ b/Generators/MadGraphControl/python/MadGraphUtils.py
@@ -2034,10 +2034,11 @@ def modify_param_card(param_card_input=None,param_card_backup=None,process_dir=M
         mglog.info('Using input param card at '+param_card_input)
 
     #ensure all blocknames and paramnames are upper case
+    paramsUpper = {}
     for blockName in list(params.keys()):
-       params[blockName.upper()] = params.pop(blockName)
-       for paramName in list(params[blockName.upper()].keys()):
-          params[blockName.upper()][paramName.upper()] = params[blockName.upper()].pop(paramName)
+       paramsUpper[blockName.upper()] = params[blockName]
+       for paramName in list(params[blockName].keys()):
+          paramsUpper[blockName.upper()][paramName.upper()] = params[blockName.upper()][paramName]
 
     if param_card_backup is not None:
         mglog.info('Keeping backup of original param card at '+param_card_backup)
@@ -2061,23 +2062,23 @@ def modify_param_card(param_card_input=None,param_card_backup=None,process_dir=M
             if decayEdit and blockName == 'DECAY':
                 decayEdit = False # Start a new DECAY block
             pos = 0 if line.strip().startswith('DECAY') else 1
-            if blockName=='MASS' and 'MASS' in params:
+            if blockName=='MASS' and 'MASS' in paramsUpper:
                 # Any residual masses to set?
                 if "MASS" in doneParams:
-                    leftOvers = [ x for x in params['MASS'] if x not in doneParams['MASS'] ]
+                    leftOvers = [ x for x in paramsUpper['MASS'] if x not in doneParams['MASS'] ]
                 else:
-                    leftOvers = [ x for x in params['MASS'] ]
+                    leftOvers = [ x for x in paramsUpper['MASS'] ]
 
                 for pdg_id in leftOvers:
-                    mglog.warning('Adding mass line for '+str(pdg_id)+' = '+str(params['MASS'][pdg_id])+' which was not in original param card')
-                    newcard.write('   '+str(pdg_id)+'  '+str(params['MASS'][pdg_id])+'\n')
+                    mglog.warning('Adding mass line for '+str(pdg_id)+' = '+str(paramsUpper['MASS'][pdg_id])+' which was not in original param card')
+                    newcard.write('   '+str(pdg_id)+'  '+str(paramsUpper['MASS'][pdg_id])+'\n')
                     doneParams['MASS'][pdg_id]=True
-            if blockName=='DECAY' and 'DECAY' not in line.strip().upper() and 'DECAY' in params:
+            if blockName=='DECAY' and 'DECAY' not in line.strip().upper() and 'DECAY' in paramsUpper:
                 # Any residual decays to include?
-                leftOvers = [ x for x in params['DECAY'] if x not in doneParams['DECAY'] ]
+                leftOvers = [ x for x in paramsUpper['DECAY'] if x not in doneParams['DECAY'] ]
                 for pdg_id in leftOvers:
                     mglog.warning('Adding decay for pdg id '+str(pdg_id)+' which was not in the original param card')
-                    newcard.write( params['DECAY'][pdg_id].strip()+'\n' )
+                    newcard.write( paramsUpper['DECAY'][pdg_id].strip()+'\n' )
                     doneParams['DECAY'][pdg_id]=True
             blockName = line.strip().upper().split()[pos]
         if decayEdit:
@@ -2099,10 +2100,10 @@ def modify_param_card(param_card_input=None,param_card_backup=None,process_dir=M
            continue
 
         #check if we have params for this block
-        if blockName not in params:
+        if blockName not in paramsUpper:
            newcard.write(linewithcomment)
            continue
-        blockParams = params[blockName]
+        blockParams = paramsUpper[blockName]
         # Check the spacing in the key
         akey = find_key_and_update(akey,blockParams)
 
@@ -2152,10 +2153,10 @@ def modify_param_card(param_card_input=None,param_card_backup=None,process_dir=M
         # Done editing the line!
 
     #check that all specified parameters have been updated (helps to catch typos)
-    for blockName in params:
-       if blockName not in doneParams and len(params[blockName].keys())>0:
+    for blockName in paramsUpper:
+       if blockName not in doneParams and len(paramsUpper[blockName].keys())>0:
           raise RuntimeError('Did not find any of the parameters for block '+blockName+' in param_card')
-       for paramName in params[blockName]:
+       for paramName in paramsUpper[blockName]:
           if paramName not in doneParams[blockName]:
             raise RuntimeError('Was not able to replace parameter '+paramName+' in param_card')
 
@@ -2174,10 +2175,9 @@ def modify_run_card(run_card_input=None,run_card_backup=None,process_dir=MADGRAP
         return
 
     # Operate on lower case settings, and choose the capitalization MG5 has as the default (or all lower case)
+    settings_lower = {}
     for s in list(settings.keys()):
-        if s.lower() not in settings:
-            settings[s.lower()] = settings[s]
-            del settings[s]
+        settings_lower[s.lower()] = settings[s]
 
     # Check for the default run card location
     if run_card_input is None:
@@ -2192,26 +2192,26 @@ def modify_run_card(run_card_input=None,run_card_backup=None,process_dir=MADGRAP
     isNLO=is_NLO_run(process_dir=process_dir)
     # add gobal PDF and scale uncertainty config to extras, except PDF or weights for syscal config are explictly set
     if not skipBaseFragment:
-        MadGraphControl.MadGraphSystematicsUtils.setup_pdf_and_systematic_weights(MADGRAPH_PDFSETTING,settings,isNLO)
+        MadGraphControl.MadGraphSystematicsUtils.setup_pdf_and_systematic_weights(MADGRAPH_PDFSETTING,settings_lower,isNLO)
 
     # Get some info out of the runArgs
     if runArgs is not None:
         beamEnergy,rand_seed = get_runArgs_info(runArgs)
-        if 'iseed' not in settings:
-            settings['iseed']=rand_seed
-        if not isNLO and 'python_seed' not in settings:
-            settings['python_seed']=rand_seed
-        if 'beamenergy' in settings:
-            mglog.warning('Do not set beam energy in MG settings. The variables are ebeam1 and ebeam2. Will use your setting of '+str(settings['beamenergy']))
-            beamEnergy=settings['beamenergy']
-            settings.pop('beamenergy')
-        if 'ebeam1' not in settings:
-            settings['ebeam1']=beamEnergy
-        if 'ebeam2' not in settings:
-            settings['ebeam2']=beamEnergy
+        if 'iseed' not in settings_lower:
+            settings_lower['iseed']=rand_seed
+        if not isNLO and 'python_seed' not in settings_lower:
+            settings_lower['python_seed']=rand_seed
+        if 'beamenergy' in settings_lower:
+            mglog.warning('Do not set beam energy in MG settings. The variables are ebeam1 and ebeam2. Will use your setting of '+str(settings_lower['beamenergy']))
+            beamEnergy=settings_lower['beamenergy']
+            settings_lower.pop('beamenergy')
+        if 'ebeam1' not in settings_lower:
+            settings_lower['ebeam1']=beamEnergy
+        if 'ebeam2' not in settings_lower:
+            settings_lower['ebeam2']=beamEnergy
     # Make sure nevents is an integer
-    if 'nevents' in settings:
-        settings['nevents'] = int(settings['nevents'])
+    if 'nevents' in settings_lower:
+        settings_lower['nevents'] = int(settings_lower['nevents'])
 
     mglog.info('Modifying run card located at '+run_card_input)
     if run_card_backup is not None:
@@ -2219,7 +2219,7 @@ def modify_run_card(run_card_input=None,run_card_backup=None,process_dir=MADGRAP
         run_card_old = run_card_backup
     else:
         run_card_old = run_card_input+'.old_to_be_deleted'
-    mglog.debug('Modifying runcard settings: '+str(settings))
+    mglog.debug('Modifying runcard settings: '+str(settings_lower))
     if os.path.isfile(run_card_old):
         os.unlink(run_card_old) # delete old backup
     os.rename(run_card_input, run_card_old) # change name of original card
@@ -2235,28 +2235,28 @@ def modify_run_card(run_card_input=None,run_card_backup=None,process_dir=MADGRAP
                 setting = command.split('=')[-1] #.strip()
                 stripped_setting = setting.strip()
                 oldValue = '='.join(command.split('=')[:-1])
-                if stripped_setting.lower() in settings:
+                if stripped_setting.lower() in settings_lower:
                     # if setting set to 'None' it will be removed from run_card
-                    if settings[stripped_setting.lower()] is None:
+                    if settings_lower[stripped_setting.lower()] is None:
                         line=''
                         mglog.info('Removing '+stripped_setting+'.')
                         used_settings += [ stripped_setting.lower() ]
                     else:
-                        line = oldValue.replace(oldValue.strip(), str(settings[stripped_setting.lower()]))+'='+setting
+                        line = oldValue.replace(oldValue.strip(), str(settings_lower[stripped_setting.lower()]))+'='+setting
                         if comment != '':
                             line += '  !' + comment
-                        mglog.info('Setting '+stripped_setting+' = '+str(settings[stripped_setting.lower()]))
+                        mglog.info('Setting '+stripped_setting+' = '+str(settings_lower[stripped_setting.lower()]))
                         used_settings += [ stripped_setting.lower() ]
         newCard.write(line.strip()+'\n')
 
     # Clean up unused options
-    for asetting in settings:
+    for asetting in settings_lower:
         if asetting in used_settings:
             continue
-        if settings[asetting] is None:
+        if settings_lower[asetting] is None:
             continue
-        mglog.warning('Option '+asetting+' was not in the default run_card.  Adding by hand a setting to '+str(settings[asetting]) )
-        newCard.write( ' '+str(settings[asetting])+'   = '+str(asetting)+'\n')
+        mglog.warning('Option '+asetting+' was not in the default run_card.  Adding by hand a setting to '+str(settings_lower[asetting]) )
+        newCard.write( ' '+str(settings_lower[asetting])+'   = '+str(asetting)+'\n')
     # close files
     oldCard.close()
     newCard.close()