After upgrading from Qlik Sense 2.1 to 3.1, I noted that the custom theme was not applied after editing theme.json file (more info here).
After investigating, I've found a workaround. There is a way to replace the theme by default by our own theme: modifying the file C:\Program Files\Qlik\Sense\Client\assets\external\requirejs\require.js.
At the end of this file, the theme.json content is hard-coded in a js function:
To apply the workaround, you need to copy & paste your old theme.json content and replace the one by default.
Note: Before pasting the content of theme.json, you will need to replace the carriage return by \n chars. This action can be done in Notepad++ by activating the option "Extended" in "Replace" section (Control + H).