diff --git a/markdownify/__init__.py b/markdownify/__init__.py
index 86226d2..0945916 100644
--- a/markdownify/__init__.py
+++ b/markdownify/__init__.py
@@ -48,6 +48,8 @@ def abstract_inline_conversion(markup_fn):
     """
     def implementation(self, el, text, convert_as_inline):
         markup = markup_fn(self)
+        if el.find_parent(['pre', 'code', 'kbd', 'samp']):
+            return text
         prefix, suffix, text = chomp(text)
         if not text:
             return ''

diff --git a/tests/test_conversions.py b/tests/test_conversions.py
index 1e685f3..9652143 100644
--- a/tests/test_conversions.py
+++ b/tests/test_conversions.py
@@ -87,6 +87,16 @@ def test_code():
     assert md('<code><span>*this_should_not_escape*</span></code>') == '`*this_should_not_escape*`'
     assert md('<code>this  should\t\tnormalize</code>') == '`this should normalize`'
     assert md('<code><span>this  should\t\tnormalize</span></code>') == '`this should normalize`'
+    assert md('<code>foo<b>bar</b>baz</code>') == '`foobarbaz`'
+    assert md('<kbd>foo<i>bar</i>baz</kbd>') == '`foobarbaz`'
+    assert md('<samp>foo<del> bar </del>baz</samp>') == '`foo bar baz`'
+    assert md('<samp>foo <del>bar</del> baz</samp>') == '`foo bar baz`'
+    assert md('<code>foo<em> bar </em>baz</code>') == '`foo bar baz`'
+    assert md('<code>foo<code> bar </code>baz</code>') == '`foo bar baz`'
+    assert md('<code>foo<strong> bar </strong>baz</code>') == '`foo bar baz`'
+    assert md('<code>foo<s> bar </s>baz</code>') == '`foo bar baz`'
+    assert md('<code>foo<sup>bar</sup>baz</code>', sup_symbol='^') == '`foobarbaz`'
+    assert md('<code>foo<sub>bar</sub>baz</code>', sub_symbol='^') == '`foobarbaz`'
 
 
 def test_del():
@@ -215,6 +225,17 @@ def test_pre():
     assert md('<pre><span>*this_should_not_escape*</span></pre>') == '\n```\n*this_should_not_escape*\n```\n'
     assert md('<pre>\t\tthis  should\t\tnot  normalize</pre>') == '\n```\n\t\tthis  should\t\tnot  normalize\n```\n'
     assert md('<pre><span>\t\tthis  should\t\tnot  normalize</span></pre>') == '\n```\n\t\tthis  should\t\tnot  normalize\n```\n'
+    assert md('<pre>foo<b>\nbar\n</b>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo<i>\nbar\n</i>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo\n<i>bar</i>\nbaz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo<i>\n</i>baz</pre>') == '\n```\nfoo\nbaz\n```\n'
+    assert md('<pre>foo<del>\nbar\n</del>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo<em>\nbar\n</em>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo<code>\nbar\n</code>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo<strong>\nbar\n</strong>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo<s>\nbar\n</s>baz</pre>') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo<sup>\nbar\n</sup>baz</pre>', sup_symbol='^') == '\n```\nfoo\nbar\nbaz\n```\n'
+    assert md('<pre>foo<sub>\nbar\n</sub>baz</pre>', sub_symbol='^') == '\n```\nfoo\nbar\nbaz\n```\n'
 
 
 def test_script():

Inline styles within `<pre>`/`<code>` blocks should be ignored
Markdown has no provision for inline styles within preformatted content (unless extensions/etc. are used).

However, inline styles are incorrectly applied within `<code>` and `<pre>` blocks (note the `**` in these examples):

```
from markdownify import markdownify as md
md('<code><b>text</b></code>')    # > '`**text**`'
md('<pre><b>text</b></pre>')      # > '\n```\n**text**\n```\n'
```

and because content is interpreted literally in Markdown preformatted content, the extra styling characters are interpreted as literal content characters instead.
tests/test_conversions.py::test_code tests/test_conversions.py::test_pre
tests/test_conversions.py::test_a tests/test_conversions.py::test_a_spaces tests/test_conversions.py::test_a_with_title tests/test_conversions.py::test_a_shortcut tests/test_conversions.py::test_a_no_autolinks tests/test_conversions.py::test_b tests/test_conversions.py::test_b_spaces tests/test_conversions.py::test_blockquote tests/test_conversions.py::test_blockquote_with_nested_paragraph tests/test_conversions.py::test_blockquote_with_paragraph tests/test_conversions.py::test_blockquote_nested tests/test_conversions.py::test_br tests/test_conversions.py::test_caption tests/test_conversions.py::test_del tests/test_conversions.py::test_div tests/test_conversions.py::test_em tests/test_conversions.py::test_header_with_space tests/test_conversions.py::test_h1 tests/test_conversions.py::test_h2 tests/test_conversions.py::test_hn tests/test_conversions.py::test_hn_chained tests/test_conversions.py::test_hn_nested_tag_heading_style tests/test_conversions.py::test_hn_nested_simple_tag tests/test_conversions.py::test_hn_nested_img tests/test_conversions.py::test_hn_atx_headings tests/test_conversions.py::test_hn_atx_closed_headings tests/test_conversions.py::test_head tests/test_conversions.py::test_hr tests/test_conversions.py::test_i tests/test_conversions.py::test_img tests/test_conversions.py::test_kbd tests/test_conversions.py::test_p tests/test_conversions.py::test_script tests/test_conversions.py::test_style tests/test_conversions.py::test_s tests/test_conversions.py::test_samp tests/test_conversions.py::test_strong tests/test_conversions.py::test_strong_em_symbol tests/test_conversions.py::test_sub tests/test_conversions.py::test_sup tests/test_conversions.py::test_lang tests/test_conversions.py::test_lang_callback