[step:Construct mutually inverse bundle maps over $M$]
Define the map $\Phi:f^*(g^*E)\to (g\circ f)^*E$ by sending each element $(x,(y,e))$ to $(x,e)$.
This is well-defined because, for every $(x,(y,e))\in f^*(g^*E)$, the equalities $y=f(x)$ and $g(y)=\pi(e)$ imply $(g\circ f)(x)=\pi(e)$.
Define the map $\Psi:(g\circ f)^*E\to f^*(g^*E)$ by sending each element $(x,e)$ to $(x,(f(x),e))$.
This is well-defined because if $(x,e)\in (g\circ f)^*E$, then $\pi(e)=g(f(x))$, so $(f(x),e)\in g^*E$, and the defining relation for $f^*(g^*E)$ is satisfied:
\begin{align*}
f(x)=f(x).
\end{align*}
For every $(x,(y,e))\in f^*(g^*E)$, the condition $y=f(x)$ gives
\begin{align*}
(\Psi\circ\Phi)(x,(y,e))
=
\Psi(x,e)
=
(x,(f(x),e))
=
(x,(y,e)).
\end{align*}
For every $(x,e)\in (g\circ f)^*E$,
\begin{align*}
(\Phi\circ\Psi)(x,e)
=
\Phi(x,(f(x),e))
=
(x,e).
\end{align*}
Hence $\Phi$ and $\Psi$ are inverse bijections.
Let
\begin{align*}
\rho_M:f^*(g^*E)\to M,
\qquad
\rho_M(x,(y,e))=x,
\end{align*}
and let
\begin{align*}
\sigma_M:(g\circ f)^*E\to M,
\qquad
\sigma_M(x,e)=x,
\end{align*}
be the bundle projections. Then
\begin{align*}
\sigma_M(\Phi(x,(y,e)))=\sigma_M(x,e)=x=\rho_M(x,(y,e)),
\end{align*}
so $\Phi$ is a map over $M$. The same calculation shows that $\Psi$ is a map over $M$.
[/step]