diff --git a/gen_seq_diag.py b/gen_seq_diag.py
index 9e829a91d4fc36dde22676c6c2106ce424b0ffd3..6eb1d5c4d6a896c39901d1e81f661298eac93281 100755
--- a/gen_seq_diag.py
+++ b/gen_seq_diag.py
@@ -16,6 +16,8 @@ iden = 4 * ' '
 # tree
 trees = []
 
+def escapeLatex(inp):
+    return inp.replace("%", "\\%").replace("#", "\\#")
 
 def fetch_file(p):
     with open(p, 'r', encoding='utf-8') as f:
@@ -204,7 +206,7 @@ class Call(Stmt):
         ctx.args.append(args)
         ctx.append(lvl, '\\begin{umlcall}' +
                    '[' +
-                   f'op={{{call.member}({args_str})}},' +
+                   f'op={{{call.member}({escapeLatex(args_str)})}},' +
                    f'return={{{ret}}},' +
                    f'dt=7' +
                    ']' +
@@ -503,7 +505,7 @@ def main():
 
         args_str = latex_escape(', '.join(
             [p[1] for p in types[spec_type].methods[spec_method].params]))
-        print(f'\\begin{{umlcall}}[op={{{spec_method}({args_str})}},' +
+        print(f'\\begin{{umlcall}}[op={{{spec_method}({escapeLatex(args_str)})}},' +
               f'return={{\\ }}]{{act}}{{{spec_obj}}}')
         print(''.join(ctx.s))
         print('\\end{umlcall}')