That looks correct because the price is bounded bellow by zero and decreases/increases are always in percentages.
I have run a quick code in matlab (adaptad from Higham (2002))
%
% Vectorized version, uses shifts via colon notation.
%%%%%%%%%% Problem and method parameters %%%%%%%%%%%%%
S = 5;E = 10;T = 1;r = 0.06;sigma = 0.3;M = 256;
dt = T/M;A = 0.5*(exp(-r*dt)+exp((r+sigma^2)*dt));
u=A+ sqrt(A^2-1);d = 1/u;p = (exp(r*dt)-d)/(u-d);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Option values at time T
W = max(E-S*d.^([M:-1:0]').*u.^([0:M]'),0);
histogram(W,50);
title('Underlying Price at Maturity')
% Re-trace to get option value at time zero
q = 1-p;
for i = M:-1:1
W = p*W(2:i+1) + q*W(1:i);
end
W = exp(-r*T)*W;
With this results one can plot the distribution of prices at maturity (easier to see it that way):
You can see that there is a much bigger cluster of prices at low values just as your figure implies.
Also the difference between your tree and most textbooks is due to the fact that you are plotting the values of $S_t$ in the y-axis. Most textbooks do not do it. If they did their figures would look twisted just like yours.