I've faced a similiar situation on couple of occasions. In my case the shortcode getting rendered on the text editor was caused by the shortcode echoing instead of returning its content.
As noted on add_shortcode
Codex entry,
Note that the function called by the shortcode should never produce
output of any kind. Shortcode functions should return the text that is
to be used to replace the shortcode. Producing the output directly
will lead to unexpected results. This is similar to the way filter
functions should behave, in that they should not produce expected side
effects from the call, since you cannot control when and where they
are called from.
My suggestion is that you double-check the output of the shortcode so that it returns stuff instead of echoing it.
If it's echoing the output and you don't feel like rewriting everything, you could wrap the echos inside output buffer, like so.
function some_shortcode( $atts, $content = null ) {
// start output buffer, which will hold all the following echoed html
ob_start();
// old code echoing html
// return html content from buffer and clear buffer
return ob_get_clean();
}
If this doesn't help, then please share your code so the community can have a better look at it.