GZipStream from .NET 3.5 doesn't allow you to set compression level. This parameter was introduced in .NET 4.5, but I don't know if it will give you better result or upgrade is suitable for you.
Built in algorythm is not very optimal, due to patents AFAIK.
So in 3.5 is only one way to get better compression is to use third party library like SDK provided by 7zip or SharpZipLib. Probably yo ushould experiment a little bit with different libs to get better compression of your data.

Email codedump link for How to serialize object + compress it and then decompress + deserialize without third-party library?