View to Camera coordinates

Ahoy,
How exactly does Unity get from camera coordinates to view port coordinates.
My understanding of the workflow is as follows,
Model Coordinates —> World Coordinates —A–>Camera Coordinates —B—>Viewport coordinates
where,
A: World to camera matrix.
B: Projection matrix.

So I thought, if I took a point from camera space and simply multiplied it by the projection matrix (manually), then I should end up with viewport coords (after dividing by the third element, of course).
That is to say,

Vector3 camPoint= new Vector3(8.2f, -6.9f, 20.0f); //Not a random choice. Will explain shortly.
Vector3 viewPort_ob= (mainCam.projectionMatrix)*camPoint;
viewPort_ob.Scale (new Vector3(1/viewPort_ob.z, 1/viewPort_ob.z, 1/viewPort_ob.z));

Debug.Log(viewPort_ob.ToString());

Very well, I got a nicely normalized point as follows,

/*
viewPort_ob was:
[ -0.4, 0.6, 1.0]

*/

However, the actual viewport point that corresponded to the camera point I had, not so randomly, supplied was in fact,

/*
Actual viewport point was,
[ 0.7, 0.2, 20.0]
viewPort_act in the following code.
*/

Which I had generated as follows,

//Generating the world point.
Vector3 viewPort_act= new Vector3 (0.7f, 0.2f, 20.0f);
Vector3 worldPoint = mainCam.ViewportToWorldPoint (viewPort_act);
Debug.Log (worldPoint.ToString ());
//Turned out to be, [8.2, -6.9, 20.0]. I do understand 20.0 is the distance from the camera.

What gives?

Been raking my brains to no avail.
Any help will be terribly and violently appreciated !

Thanks.

**

I forgot to mention that I had positioned the camera in such a way that the camera and world coordinate systems are aligned.