Without clipping, the output position is correct:

With clipping, the output position is wrong as it gets shifted to the left:

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\psset
{
unit=0.8cm,
runit=\psunit,
fillstyle=solid,
PointName=none,
PointSymbol=none,
}
\pstVerb
{
true setglobal
globaldict begin
/theta 76 def
/Major 6.0 def
/Minor 3.3 def
/p2c {dup 3 1 roll cos mul 3 1 roll sin mul} bind def
end
false setglobal
}
\def\DeclareNodes
{%
\pstGeonode
(0,-8){Bottom}%
(0,8){Top}%
(0,0){center}%
(0,2.7){A}%
(0.5,2.7){B}%
(1,3.25){C}%
(1.2,1.3){D}%
(1.3,1.0){E}%
(2.0,1.0){F}%
(3.0,1.0){G}%
(3.0,2.2){H}%
(!Minor Major theta p2c){I}%
(!Minor Major theta neg p2c){J}%
(4,-2){K}%
(4,0){L}%
(2.2,-1.8){M}%
(1.5,-1){N}%
(1,-1){O}%
(0,-3.2){P}%
\pstOrtSym{Bottom}{Top}{B,C,D,E,F,G,H,I,J,K,L,M,N,O}%
}
\def\RightPart
{%
\psline(A)(B)(C)%
\psbezier(D)(E)(F)%
\psbezier(G)(H)(I)%
\psellipticarcn[dimen=middle](center)(!Major Minor){(I)}{(J)}%middle must be set!
\psbezier(K)(L)(M)%
\psbezier(N)(O)(P)%
}
\def\LeftPart
{%
\psbezier(O')(N')(M')%
\psbezier(L')(K')(J')%
\psellipticarcn[dimen=middle](center)(!Major Minor){(J')}{(I')}%middle must be set!
\psbezier(H')(G')(F')%
\psbezier(E')(D')(C')%
\psline(B')%
}%
\begin{document}
\begin{pspicture}[showgrid=top](-7,-4)(7,4)
\DeclareNodes
\pscustom*{\RightPart\LeftPart\closepath}
\end{pspicture}
\begin{pspicture}[showgrid=top](-7,-4)(7,4)
\DeclareNodes
\begin{psclip}{\pscustom[linestyle=none]{\RightPart\LeftPart\closepath}}
\psframe*(-7.5,-5)(7.5,5)
\end{psclip}
\end{pspicture}
\end{document}
Edit:
In addition to moving \DeclareNodes inside \pscustom (as mentioned in the accepted answer), we have to change showgrid=top to showgrid=bottom. However, this grid problem has been regarded as a bug and fixed, see this answer for the details.


