I am trying to prove that whenever there is an injective morphism of presheaves $\mathcal{F} \rightarrow \mathcal{G}$, the morphism induced on the sheafifications is still injective; it's basically exercise in Hartshorne. Here is my attempted solution and I'd like someone to check that it makes sense and there are no obvious mistakes. I am especially unsure about bold statements.
Note that a morphism of presheaves $f$ that is injective on open sets $U \subseteq X$ induces an injective morphism on the stalks $f_x:\mathcal{F}_x \rightarrow \mathcal{G}_x$. We know $f$ induces $f_x$ by [omissis]. To prove injectivity, assume we are given two elements of $\mathcal{F}_x$ with the same image in $\mathcal{G}_x$; we can choose for them two representatives $s, t$ of $\mathcal{F}$ on some open neighbourhood of $x$ and without loss of generality we can take the same neighbourhood $U$ for both. Their images are sections of $\mathcal{G}$ that have the same image in $\mathcal{G}_x$, which means that we can find an open subset $V \subseteq U$ such that $f(s) = f(t)$ in $\mathcal{G}(V)$. But then by the injectivity of $f$, $s = t$ in $\mathcal{F}(V)$. Now I claim that $\mathcal{F}_x \cong \mathcal{F}^+_x$. Define a map $\Phi:\mathcal{F}_x\to\mathcal{F}^+_x$ in the following way: for an element $s_x\in\mathcal{F}_x$, we choose a representative $(s,U)$ where $s\in\mathcal{F}(U)$, send it to the family $(s_p)_{p\in U}\in\mathcal{F}^+(U)$ and take the equivalence class of $(s_p)_{p\in U}$ in $\mathcal{F}^+_x$. I claim that this map is a bijection. [omissis]
As a consequence of this fact, we can define an injective morphism $f^+_x:\mathcal{F}^+_x \rightarrow \mathcal{G}^+_x$ as $\Phi^{-1} \circ f_x$. Note that this is the map induced on the stalks by the unique morphism $f^+:\mathcal{F}^+ \rightarrow \mathcal{G}^+$ arising from the universal property of sheafification. All that's left to prove is that it implies the injectivity $f^{+}:\mathcal{F} \rightarrow \mathcal{G}$. Let $s \in \mathcal{F}^+(U)$ and suppose $f^+(U)(s) = 0$. Then clearly $f_x(s_x)=0$, where $s_x=[(U,s)] \in \mathcal{F}^+_x$, $x$ arbitrary. Since $f^+_x$ is injective, there exists an open set $V_x \subset U$ such that $s|_{V_x} = 0$. $\{V_x \}_{x \in U}$ is clearly an open cover of $U$ and since $\mathcal{F^+}$ is a sheaf we can conclude $s = 0$, hence $f^+(U)$ is injective for every $U$.