This is the guilty part of OMAIL32.DLL:
.text:1001D364 83 7D 0C 00 cmp [ebp+arg_4], 0 .text:1001D368 74 3A jz short use_default_val .text:1001D36A 83 65 0C 00 and [ebp+arg_4], 0 .text:1001D36E 8D 4D 0C lea ecx, [ebp+arg_4] .text:1001D371 6A 0A push 0Ah ;number base .text:1001D373 51 push ecx ;pointer to result .text:1001D374 50 push eax ;pointer to cfg value .text:1001D375 E8 AA 9B 00 00 call _strtol ;convert string to int .text:1001D37A 8B F8 mov edi, eax .... .text:1001D38F 8B 45 08 mov eax, [ebp+result] .... .text:1001D39D 89 38 mov [eax], edi ....
use_default_val: It's part of a function which converts all preferences which are numbers (also on/off preferences). As you can plainly see, there is an argument to the function which tells it to always use the default value if it's zero. I suppose the programmers put this in for testing, BUT FORGOT TO REMOVE IT AGAIN, causing Opera to use DEFAULT VALUES every time you restarted it. The astonishingly simple solution is to delete the jump, so just replace the bytes 74 3A in the file OMAIL32.DLL (which should be 262.193 bytes long, to be sure you have exactly the same version) at Offset 1D368 with 90 90...