How can I scale an arrow so that the scaling is based on its starting point? In my example you see my problem. The black arrow should be scaled down by fifty percent to give the red arrow (as if (0,2) would be the origin). Instead I get the blue arrows, because scaling simply multiplies all the coordinate entries. I tried two methods with the same unwanted behavior. Do you know a simple way to get what I intended? Thanks!
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [thin,gray!40,step=1] (0,0) grid (4,4);
\node at (-.3,-.3){(0,0)};
\draw [->, very thick] (0,2) -- (4,4);
\draw [->, thick, red] (0,2) -- (2,3);
\draw [->, thick, blue, scale=.5] (0,2) -- (4,4);
\begin{scope}[scale=.25]
\draw [->, thick, blue] (0,2) -- (4,4);
\end{scope}
\end{tikzpicture}
\end{document}