SWF: Fix writing signed fixed bit values

The function for converting float to signed 16.16 fixed-point seems to be incorrect. For example, try converting -1.5 to fixed point with the current code You'll get -2147418112 when you should get -98304! This causes exceptions when writing out various SWFs.

The attached pull request should hopefully solve the issue -- hopefully I'm not missing any subtleties.