Hi,
Are you sure OpenGL is used? Maybe your application is using the internal EDGELIB renderer, thus making the call to glfrustum ineffective.
The transformation matrix is using 20:12 fixed point values. The only exception is the call to E3DSurface::Scale (which translates it into 20:12 fixed point values internally). The reason the scale function is using 16:16 fixed point values is to make it consistent with the scaling values of E2DSurface::Blt.