\subseteq + \circ as a single symbol (“open subset”)

I'm trying to create symbols \opn for "open subset" and \cls "closed subset". I want them to look like this:

My current solution is:

\def\opn{\!\ensuremath{\subseteq\!\!\!\!\!\raisebox{1pt}{$\circ$}}\,}
\def\cls{\!\ensuremath{\subseteq\!\!\!\!\!\raisebox{1pt}{$\bullet$}}\,}

But the problem is when I use this, Latex doesn't treat \subseteq and \circ as a single symbol, so the spacing is incorrect when for example I write $U~\!\!\!\opn\!\!\!~X$:

How can I make the position of the circle be fixed in the middle, so that \opn becomes a single symbol that is resizable, i.e. responds well to \huge?

Edit: @egreg @MartinScharrer: When using your command (to define the stalk of a sheaf)

\mathcal{F}_x:=\frac{\bigsqcup\{\mathcal{F}(U);\, x\in U \opn X\}}{s\sim s'
\,\Longleftrightarrow\, s\in\mathcal{F}(U)\text{ and }s'\in\mathcal{F}(U')\text{ and }
\exists x\in W \opn U\cap U'\!:s|_W=s'|_W}

I get ugly results, namely (egreg's solution)
and (Martin Scharrer's solution) .

Currently, I like this edited Martin's solution the most aesthetically appealing:

\def\opn{ \ensuremath{\mathrel{\subseteq \!\!\!\!\!\raisebox{1.63pt}{$\scriptstyle\circ$}}}}    %odprta podmnozica
\def\opnn{\ensuremath{\mathrel{\subsetneq\!\!\!\!\!\raisebox{1.63pt}{$\scriptstyle\circ$}}}}    %prava odprta podmnozica
\def\cls{ \ensuremath{\mathrel{\subseteq \!\!\!\!\!\raisebox{1.63pt}{$\scriptstyle\bullet$}}}}  %zaprta podmnozica
\def\clsn{\ensuremath{\mathrel{\subsetneq\!\!\!\!\!\raisebox{1.63pt}{$\scriptstyle\bullet$}}}}  %prava zaprta podmnozica

but there is still a problem in the above code. Could anyone edit this last code to fix the problem with spacing?

-
One should never use negative spacing like \! for something like this; see this answer of mine for details. –  Hendrik Vogt Jun 15 '12 at 17:31

Here is a possibility:

\newcommand\opn{\mathrel{\ooalign{$\subseteq$\cr
\hidewidth\raise.225ex\hbox{$\circ\mkern.5mu$}\cr}}}
\newcommand\cls{\mathrel{\ooalign{$\subseteq$\cr
\hidewidth\raise.225ex\hbox{$\bullet\mkern.5mu$}\cr}}}

The symbols will change size according to the context. They don't reduce in subscript or superscripts, for that something more is needed.

\mathcal{F}_x:=
\frac{\bigsqcup\{\mathcal{F}(U);\, x\in U \opn X\}}
{\exists x\in W \opn U\cap U'\!:s|_W=s'|_W}
$\bigskip$\displaystyle\opn\cls
\textstyle\opn\cls
\scriptstyle\opn\cls

\newcommand\opn{\mathrel{\scalerel*{\usebox{\TSopnBox}}{\subseteq}}}
\newcommand\cls{\mathrel{\scalerel*{\usebox{\TSclsBox}}{\subseteq}}}

\begin{document}
$U \opn X \quad \scriptstyle U \opn X \quad \scriptscriptstyle U \opn X$
$U \cls X \quad \scriptstyle U \cls X \quad \scriptscriptstyle U \cls X$
\end{document}

One possible quibble with this first approach is that, in \scalereling the \textstyle symbol to the smaller math sizes, the stroke width of the glyphs is altered in a way that the user finds unattractive. If that is the case, the scalerel approach can be dispensed with, and replaced with the \mathchoice approach in which the vertical and horizontal kerning is tuned for each particular math style, but using the glyphs associated with the particular math style in force:

\documentclass{article}
\usepackage{stackengine}
\def\overlayprep{\stackMath\def\stackalignment{l}\def\useanchorwidth{T}}
\newcommand\opn{\opncls{\circ}}
\newcommand\cls{\opncls{\bullet}}
\newcommand\opncls[1]{\overlayprep\mathrel{%
\mathchoice%
{\bottominset{#1}{\subseteq}{.55ex}{}}%
{\bottominset{#1}{\subseteq}{.55ex}{}}%
{\bottominset{\scriptstyle#1}{\scriptstyle\subseteq}{.49ex}{.40ex}}%
{\bottominset{\scriptscriptstyle#1}{\scriptscriptstyle\subseteq}{.39ex}{.32ex}}%
}}
\begin{document}

$$U\opn X\quad \scriptstyle U\opn X\quad \scriptscriptstyle U\opn X$$

$$U\cls X\quad \scriptstyle U\cls X\quad \scriptscriptstyle U\cls X$$

\end{document}

I confirmed that both approaches work with the user's problem, as seen here for approaches 1 and 2, respectively:

-