diff --git a/python/dune/perftool/options.py b/python/dune/perftool/options.py
index 028e160fb23fb6d937d3e9bf19b6a3456a46c2e3..0d7ee593ff79ed40d1de8c9e6e6fe3f3e95b6b49 100644
--- a/python/dune/perftool/options.py
+++ b/python/dune/perftool/options.py
@@ -94,12 +94,14 @@ def update_options_from_commandline(opt):
 def update_options_from_inifile(opt):
     """ Return an options array object with updated values from an inifile """
     if opt.ini_file:
-        def _fix_bool(k, v):
+        def _fix_types(k, v):
             if hasattr(type(opt), k) and getattr(type(opt), k).type is bool:
                 return bool(eval(v))
+            if hasattr(type(opt), k):
+                return getattr(type(opt), k).type(v)
             return v
         ini = parse_ini_file(opt.ini_file).get("formcompiler", {})
-        ini = {k: _fix_bool(k, v) for k, v in ini.items()}
+        ini = {k: _fix_types(k, v) for k, v in ini.items()}
         opt = opt.copy(**ini)
     return opt