[proofplan]
We use the defining local description of sheafification: the canonical morphism $\theta: \mathcal{F} \to \mathcal{F}^+$ induces an isomorphism on every stalk. Given $\varphi: \mathcal{F} \to \mathcal{G}$, we prescribe the germ of $\varphi^+_U(s)$ at each point $p \in U$ by transporting the germ $s_p \in \mathcal{F}^+_p$ through the inverse of $\theta_p$ and then through $\varphi_p$. The sheaf axioms for $\mathcal{G}$ guarantee that these locally defined germs glue to a unique section of $\mathcal{G}(U)$, and the resulting maps are compatible with restrictions. Uniqueness follows because morphisms into a sheaf are determined pointwise on germs, and the natural Hom-bijection is exactly composition with $\theta$.
[/proofplan]
[step:Use the stalk isomorphism supplied by sheafification]
Let $\theta: \mathcal{F} \to \mathcal{F}^+$ denote the canonical presheaf morphism from $\mathcal{F}$ to its sheafification. For each point $p \in X$, let
\begin{align*}
\theta_p: \mathcal{F}_p &\to \mathcal{F}^+_p
\end{align*}
be the induced map on stalks. By the Stalk Isomorphism Property of Sheafification, $\theta_p$ is an isomorphism for every $p \in X$.
Let $\varphi: \mathcal{F} \to \mathcal{G}$ be a presheaf morphism. For each $p \in X$, let
\begin{align*}
\varphi_p: \mathcal{F}_p &\to \mathcal{G}_p
\end{align*}
be the induced stalk map. Define
\begin{align*}
\psi_p: \mathcal{F}^+_p &\to \mathcal{G}_p \\
a &\mapsto \varphi_p(\theta_p^{-1}(a)).
\end{align*}
This gives a family of stalk maps $\{\psi_p\}_{p \in X}$ satisfying
\begin{align*}
\psi_p \circ \theta_p = \varphi_p
\end{align*}
for every $p \in X$.
[guided]
The canonical map $\theta: \mathcal{F} \to \mathcal{F}^+$ is the bridge between the original presheaf and its sheafification. For every point $p \in X$, it induces a stalk map
\begin{align*}
\theta_p: \mathcal{F}_p &\to \mathcal{F}^+_p.
\end{align*}
The defining stalk property of sheafification, recorded as the Stalk Isomorphism Property of Sheafification, says that each $\theta_p$ is an isomorphism.
Now fix a presheaf morphism $\varphi: \mathcal{F} \to \mathcal{G}$. Its induced stalk map at $p$ is
\begin{align*}
\varphi_p: \mathcal{F}_p &\to \mathcal{G}_p.
\end{align*}
Since $\theta_p$ is an isomorphism, every germ $a \in \mathcal{F}^+_p$ comes from a unique germ $\theta_p^{-1}(a) \in \mathcal{F}_p$. Therefore the only possible stalk map for a factorization through $\theta$ is
\begin{align*}
\psi_p: \mathcal{F}^+_p &\to \mathcal{G}_p \\
a &\mapsto \varphi_p(\theta_p^{-1}(a)).
\end{align*}
With this definition,
\begin{align*}
(\psi_p \circ \theta_p)(b)
=
\psi_p(\theta_p(b))
=
\varphi_p(\theta_p^{-1}(\theta_p(b)))
=
\varphi_p(b)
\end{align*}
for every $b \in \mathcal{F}_p$. Hence
\begin{align*}
\psi_p \circ \theta_p = \varphi_p.
\end{align*}
This proves that the desired factorization is forced at the level of stalks.
[/guided]
[/step]
[step:Assemble the prescribed stalk maps into sections of $\mathcal{G}$]
Let $U \subseteq X$ be an open set, and let $s \in \mathcal{F}^+(U)$ be a section. We define a section $\varphi^+_U(s) \in \mathcal{G}(U)$ as follows. For each point $p \in U$, prescribe its germ by
\begin{align*}
(\varphi^+_U(s))_p := \psi_p(s_p) \in \mathcal{G}_p,
\end{align*}
where $s_p \in \mathcal{F}^+_p$ denotes the germ of $s$ at $p$.
We must verify that these prescribed germs are represented locally by genuine sections of $\mathcal{G}$. By the construction of sheafification from compatible germs, for each $p \in U$ there exist an open neighbourhood $V_p \subseteq U$ of $p$ and a section $t_p \in \mathcal{F}(V_p)$ such that
\begin{align*}
s_q = \theta_q((t_p)_q)
\end{align*}
for every $q \in V_p$. Define
\begin{align*}
g_p := \varphi_{V_p}(t_p) \in \mathcal{G}(V_p),
\end{align*}
where $\varphi_{V_p}: \mathcal{F}(V_p) \to \mathcal{G}(V_p)$ is the component of $\varphi$ on $V_p$. Then for every $q \in V_p$,
\begin{align*}
(g_p)_q
=
(\varphi_{V_p}(t_p))_q
=
\varphi_q((t_p)_q)
=
\psi_q(\theta_q((t_p)_q))
=
\psi_q(s_q).
\end{align*}
Thus $g_p$ realizes the prescribed germs on $V_p$.
If $p,r \in U$, then on $V_p \cap V_r$ the sections $g_p|_{V_p \cap V_r}$ and $g_r|_{V_p \cap V_r}$ have the same germ at every point $q \in V_p \cap V_r$, namely $\psi_q(s_q)$. Since $\mathcal{G}$ is a sheaf, the identity axiom for sheaves implies
\begin{align*}
g_p|_{V_p \cap V_r} = g_r|_{V_p \cap V_r}.
\end{align*}
Therefore the gluing axiom for $\mathcal{G}$ gives a unique section $\varphi^+_U(s) \in \mathcal{G}(U)$ whose restriction to each $V_p$ is $g_p$.
[guided]
We now turn the stalkwise prescription into an actual section over every open set. Fix an open set $U \subseteq X$ and a section $s \in \mathcal{F}^+(U)$. The desired section $\varphi^+_U(s) \in \mathcal{G}(U)$ must have germ
\begin{align*}
(\varphi^+_U(s))_p := \psi_p(s_p)
\end{align*}
at each point $p \in U$. The issue is that a family of germs does not automatically come from a section; this is exactly where the sheaf property of $\mathcal{G}$ is needed.
By the local construction of the sheafification $\mathcal{F}^+$, each point $p \in U$ has an open neighbourhood $V_p \subseteq U$ and a section $t_p \in \mathcal{F}(V_p)$ such that the section $s$ is locally represented by $t_p$ through $\theta$. In stalk language, this means
\begin{align*}
s_q = \theta_q((t_p)_q)
\end{align*}
for every $q \in V_p$.
Define
\begin{align*}
g_p := \varphi_{V_p}(t_p) \in \mathcal{G}(V_p),
\end{align*}
where $\varphi_{V_p}: \mathcal{F}(V_p) \to \mathcal{G}(V_p)$ is the component of the presheaf morphism $\varphi$ on the open set $V_p$. For every $q \in V_p$, the germ of $g_p$ at $q$ is
\begin{align*}
(g_p)_q
=
(\varphi_{V_p}(t_p))_q
=
\varphi_q((t_p)_q).
\end{align*}
Using the definition $\psi_q = \varphi_q \circ \theta_q^{-1}$ and the identity $s_q = \theta_q((t_p)_q)$, we get
\begin{align*}
(g_p)_q
=
\varphi_q((t_p)_q)
=
\psi_q(\theta_q((t_p)_q))
=
\psi_q(s_q).
\end{align*}
So $g_p$ is a genuine local section of $\mathcal{G}$ realizing the prescribed germs on $V_p$.
Now compare two such local sections $g_p \in \mathcal{G}(V_p)$ and $g_r \in \mathcal{G}(V_r)$. On the overlap $V_p \cap V_r$, for every point $q \in V_p \cap V_r$, both restrictions have germ $\psi_q(s_q)$. Since $\mathcal{G}$ is a sheaf, its identity axiom says that two sections over the same open set with equal germs at every point are equal. Therefore
\begin{align*}
g_p|_{V_p \cap V_r} = g_r|_{V_p \cap V_r}.
\end{align*}
The family $\{g_p\}_{p \in U}$ is compatible on overlaps. By the gluing axiom for the sheaf $\mathcal{G}$, there exists a unique section $\varphi^+_U(s) \in \mathcal{G}(U)$ such that
\begin{align*}
\varphi^+_U(s)|_{V_p} = g_p
\end{align*}
for every $p \in U$. This section has exactly the prescribed germs $\psi_p(s_p)$.
[/guided]
[/step]
[step:Verify that the assembled maps form a sheaf morphism]
For each open set $U \subseteq X$, the preceding step defines a map
\begin{align*}
\varphi^+_U: \mathcal{F}^+(U) &\to \mathcal{G}(U).
\end{align*}
Let $W \subseteq U$ be open and let $s \in \mathcal{F}^+(U)$. For every point $p \in W$, the germ of $\varphi^+_W(s|_W)$ at $p$ is
\begin{align*}
(\varphi^+_W(s|_W))_p
=
\psi_p((s|_W)_p)
=
\psi_p(s_p),
\end{align*}
and the germ of $(\varphi^+_U(s))|_W$ at $p$ is also
\begin{align*}
((\varphi^+_U(s))|_W)_p
=
(\varphi^+_U(s))_p
=
\psi_p(s_p).
\end{align*}
Since $\mathcal{G}$ is a sheaf, the identity axiom implies
\begin{align*}
\varphi^+_W(s|_W) = (\varphi^+_U(s))|_W.
\end{align*}
Thus the maps $\{\varphi^+_U\}_{U \subseteq X}$ commute with restrictions, so they define a sheaf morphism
\begin{align*}
\varphi^+: \mathcal{F}^+ &\to \mathcal{G}.
\end{align*}
[/step]
[step:Check that $\varphi^+$ factors $\varphi$ through $\theta$]
Let $U \subseteq X$ be open and let $a \in \mathcal{F}(U)$. We compare the two sections $\varphi_U(a)$ and $\varphi^+_U(\theta_U(a))$ of $\mathcal{G}(U)$ by their germs. For every point $p \in U$,
\begin{align*}
(\varphi^+_U(\theta_U(a)))_p
=
\psi_p((\theta_U(a))_p)
=
\psi_p(\theta_p(a_p))
=
\varphi_p(a_p)
=
(\varphi_U(a))_p.
\end{align*}
Since $\mathcal{G}$ is a sheaf, its identity axiom implies
\begin{align*}
\varphi^+_U(\theta_U(a)) = \varphi_U(a).
\end{align*}
This holds for every open set $U \subseteq X$ and every $a \in \mathcal{F}(U)$, hence
\begin{align*}
\varphi = \varphi^+ \circ \theta.
\end{align*}
[/step]
[step:Prove uniqueness from equality on stalks]
Let $\alpha: \mathcal{F}^+ \to \mathcal{G}$ be a sheaf morphism such that
\begin{align*}
\varphi = \alpha \circ \theta.
\end{align*}
For every point $p \in X$, passing to stalks gives
\begin{align*}
\varphi_p = \alpha_p \circ \theta_p.
\end{align*}
Since $\theta_p$ is an isomorphism, we obtain
\begin{align*}
\alpha_p = \varphi_p \circ \theta_p^{-1} = \psi_p.
\end{align*}
Thus $\alpha$ and $\varphi^+$ induce the same map on every stalk.
Let $U \subseteq X$ be open and let $s \in \mathcal{F}^+(U)$. For every $p \in U$,
\begin{align*}
(\alpha_U(s))_p
=
\alpha_p(s_p)
=
\psi_p(s_p)
=
(\varphi^+_U(s))_p.
\end{align*}
Since $\mathcal{G}$ is a sheaf, the identity axiom implies
\begin{align*}
\alpha_U(s) = \varphi^+_U(s).
\end{align*}
Therefore $\alpha = \varphi^+$, proving uniqueness.
[/step]
[step:Identify the adjunction by composition with $\theta$]
Define
\begin{align*}
\Theta_{\mathcal{F},\mathcal{G}}:
\operatorname{Hom}_{\mathrm{Sh}}(\mathcal{F}^+,\mathcal{G})
&\to
\operatorname{Hom}_{\mathrm{PSh}}(\mathcal{F},\mathcal{G}) \\
\alpha &\mapsto \alpha \circ \theta.
\end{align*}
The existence part proves that $\Theta_{\mathcal{F},\mathcal{G}}$ is surjective, because every presheaf morphism $\varphi: \mathcal{F} \to \mathcal{G}$ has a factorization $\varphi = \varphi^+ \circ \theta$. The uniqueness part proves that $\Theta_{\mathcal{F},\mathcal{G}}$ is injective, because two sheaf morphisms $\alpha,\beta: \mathcal{F}^+ \to \mathcal{G}$ with $\alpha \circ \theta = \beta \circ \theta$ must both be the unique factorization of that common presheaf morphism.
Thus $\Theta_{\mathcal{F},\mathcal{G}}$ is a bijection:
\begin{align*}
\operatorname{Hom}_{\mathrm{Sh}}(\mathcal{F}^+,\mathcal{G})
\cong
\operatorname{Hom}_{\mathrm{PSh}}(\mathcal{F},\mathcal{G}).
\end{align*}
The construction is natural in $\mathcal{F}$ and $\mathcal{G}$ because it is defined by composition with the canonical morphism $\theta$ and by the uniquely determined factorization through $\theta$. Hence sheafification is left adjoint to the forgetful functor from sheaves to presheaves.
[/step]