Guarda mi hai fatto insospettire ed effettivamente quel c4 non dovrebbe esserci, sono tornato ad HttpWebRequest che avevo inizialmente abbandonato perchè quando c'era un errore restituiva un generico "400 bad request", questo è il procedimento con cui usciva l'artefatto:

codice:
                var client = new TcpClient("accounts.google.com", 443);

                Stream netStream = client.GetStream();
                SslStream sslStream = new SslStream(netStream);
                sslStream.AuthenticateAsClient("accounts.google.com");

                string
                    content = "client_id=" + UserInfo["ClientID"];
                    content += "&client_secret=" + UserInfo["ClientSecret"];
                    content += "&refresh_token=" + UserInfo["RefreshToken"];
                    content += "&grant_type=refresh_token";

                byte[] contentAsBytes = Encoding.ASCII.GetBytes(content);

                StringBuilder msg = new StringBuilder();
                msg.AppendLine("POST /o/oauth2/token HTTP/1.1");
                msg.AppendLine("Host: accounts.google.com");
                msg.AppendLine("Content-Type: application/x-www-form-urlencoded");
                msg.AppendLine("Content-Length: " + contentAsBytes.Length.ToString());
                msg.AppendLine("");

                byte[] headerAsBytes = Encoding.ASCII.GetBytes(msg.ToString());
                sslStream.Write(headerAsBytes);
                sslStream.Write(contentAsBytes);

                byte[] buffer = new byte[2048];
                int bytes = sslStream.Read(buffer, 0, buffer.Length);
                string response = Encoding.ASCII.GetString(buffer, 0, bytes);

                sslStream.Close();
                netStream.Close();
                client.Close();