Fix race condition with fillText/strokeText.

This commit fixes the race condition where if you executed fillText or
strokeText more than once you would be using the previously scaled font
size property.

Let's consider this example:
ctx.font = '12pt Tahoma';
ctx.fillText('Hello', 0, 0); // ctx.font changes to ratio * font_size
ctx.fillText('Hello', 0, 0); // ctx.font changes to ratio^2 * font_size

The first fillText would be rendered with ratio * font_size, but since
the font size property stays multiplied, on the next execution it will
be multiplied again, causing a further multiplied version to appear.

The solution employed —since canvas works this way and you can't
explicitly set a font with a fillText call— is to multiply the font size,
execute the fillText function and then divide by the ratio. This way,
the font size stays intact.